2013-08-02 51 views
1

实体数据模型向导说:什么是包括数据库密码在web.config中的潜在安全风险

此连接字符串似乎包含敏感数据(例如密码)时所需的 连接到数据库。将敏感数据存储在连接字符串中可能存在安全风险。您是否想要 将这些敏感数据包含在连接字符串中?

我在很多实时项目中都包含了db密码,它有多危险?

回答

2

这涉及到您的网络服务器上的域和IIS的安全性如何? IIS和web.config位于Web应用程序的根目录下。如果您在域安全方面存在问题,而且人们可以访问您的inetpub或wwwroot目录及其子目录,则您的网站始终处于危险之中。如果您使用的是第三方提供商,如去爸爸或1和1,他们是相对安全的。

如果您自己托管它,您希望限制访问权限,尤其是目录列表权限。您想尽可能减轻权限。同样,对于您的Web应用程序使用的SQL帐户,还要尽可能限制数据库特权并缓解访问。也不要使用通用帐户进行访问,并让每个网络应用都拥有自己的帐户。在一个域中,您需要确保在DMZ中采取必要的预防措施,以确保该服务器位于网络边缘。

内部威胁比外部威胁更普遍。那些已经在您的域上拥有较高权限的用户可能已经有权访问您的Web应用程序的根目录,而您甚至不知道它!请留意IIS的代理帐户,以便IIS用于Web应用程序和Web服务。

2

您应该使用加密连接字符串aspnet_regiis也请查看此链接(How To Encrypt web.config),获取一些有用的信息。

至于Web应用程序的其他方面,你需要确保你正在设置最小权限可能,确保您研究的所有Web应用程序漏洞以及如何防止这些。

+1

这不是风险评估。 – usr

+0

不仅如此,它确实不会使任何事情更安全。如果服务器可以解码它,服务器上的攻击者也可以解码。 –

+0

同意,但如果密码是纯文本的,那么即使有权访问服务器的用户也能看到密码 - 不需要成为攻击者。 – christiandev

3

这是关于尽量减少风险。比方说,一个攻击者发现从服务器获取代码的副本的一种方式,但不是在服务器上执行代码的方式:

  • 如果存储在代码中的用户名和密码,攻击者现在可以直接访问以与您的代码相同的特权将数据提供给您的数据库
  • 如果您使用集成身份验证,攻击者仍然无法从数据库获取数据,因为他无法模拟用户执行集成身份验证。
  • 如果您使用正确的IIS encrption,您必须能够在服务器本身上执行代码(加密密钥与服务器绑定,而不是代码),以便能够获取用户名和密码。所以攻击者仍然无法访问数据库。
+0

但是,您不希望将风险降至零,因为这会花费更多的钱。有一个从不为零的最佳点。 – usr

+0

@usr - 唯一的零风险是拔下服务器,并将其融化。除此之外,总会有一些风险。将它连接到网络,存在风险。所以你的评论很没有意义。 –

+2

@usr好点!做成本效益分析总是很重要的。引用[FightClub](http://en.wikiquote.org/wiki/Fight_Club_%28film%29)“* ...我们是否应该开始召回?将现场的车辆数量A乘以可能的失败率B乘以平均庭外结算C.次数B乘以C等于X.如果X小于召回成本,我们不做一次。*“ –

2

风险是只有你可以评估的东西。它是否是卧室里没有连接到互联网的测试服务器?风险不大。它是没有任何真实敏感信息的小公司的内部公司服务器吗?也许风险不大。

它连接到互联网吗?这是危险的。如果你连接到互联网,总是有风险的。为什么?因为互联网不是一个安全的地方。无论你是多么大或小,都是你的目标。有自动机器人漫游网络寻找易受攻击的系统,并自动将它们接管。然后,他们使用恶意软件感染系统以传播给用户。或者他们将您的凭证出售给其他黑客,以便他们可以将您的服务器用于垃圾网络的指挥和控制中心。或者其他任何情况。

如果您在互联网上,您有风险。期。所以一定要认真对待安全。

2

用连接字符串中的集成安全替换用户名和密码。 确保使用连接的进程与已在SQL服务器上注册的用户(只需足够)权限执行其任务。这应该使您的系统受到危害的风险降至最低。

相关问题