在web.config中包含数据库密码的潜在安全风险是什么



实体数据模型向导显示:

此连接字符串似乎包含敏感数据(例如,密码)连接到数据库。在连接字符串中存储敏感数据可能存在安全风险。你想要吗在连接字符串中包含此敏感数据?

我在许多实时项目中都包含了数据库密码,风险有多大?

这一切都是为了将风险降至最低。比方说,攻击者找到了一种从服务器获取代码副本的方法,但没有找到在服务器上执行代码的方法:

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

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

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

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

归根结底,您的域和web服务器上的IIS的安全性如何?IIS和web.config位于web应用程序的根目录。如果您在域安全方面存在问题,并且人们能够访问您的inetpub或wwwroot目录及其子女,那么您的网站始终处于风险之中。如果你使用的是第三方提供商,如go daddy或1和1,它们相对安全。

如果您自己托管它,您需要限制访问权限,尤其是目录列表权限。您希望尽可能减少权限。此外,使用您用于web应用程序的SQL帐户,可以限制数据库权限并尽可能减少访问权限。此外,不要使用通用帐户进行访问,并让每个网络应用程序都有自己的帐户。在域中,如果网络服务器位于网络边缘,您需要确保在DMZ中采取必要的预防措施,以确保其安全。

内部威胁比外部威胁更普遍。那些已经在你的域中拥有提升权限的人可能已经在你不知情的情况下访问了你的web应用程序的根目录!请密切关注IIS用于web应用程序和web服务的代理帐户。

您应该使用aspnet_regiis加密连接字符串。也可以查看此链接(如何加密web.config),以获取一些有用信息。

关于web应用程序的其他方面,您需要确保设置了尽可能少的权限,确保您研究了所有web应用程序漏洞以及如何防范这些漏洞。

在连接字符串中将用户名和密码替换为集成安全。请确保使用连接的进程与在SQL server上注册的用户一起执行,该用户具有(刚好足够)执行其任务的权限。这样可以最大限度地降低系统被破坏的风险。

最新更新