我们有一个ASP.NET 4.0 Web应用程序,它通过LAN连接到单独计算机上的SQL Server。我使用存储在我的Web.config中的ConnectionString(带有SQL Server身份验证)来执行此操作。基本上,它是一种相当传统的Web-Server-to-SQL策略。
但是,我们的一位客户认为这种策略并不安全。该客户端表示我们应该只通过单独的Web服务层连接到SQL Server。
我真的不想重写这个应用程序只是为了满足这个客户端。我应该告诉他什么?有没有人知道我怎么能最好地反驳这个?
提前致谢...
答案 0 :(得分:11)
安全始终是一种权衡。客户真的害怕什么?
拥有“明确”的数据库凭证?我已经看到审计人员指出这是一个潜在的漏洞,但实际上,如果某人已经破坏了您的Web服务器,他们可以针对数据库运行任意代码,因此加密数据库凭据并不会给您带来太大的影响。
您的网络应用应该使用最小权限用户连接到数据库,因此,损害网络服务器应该只授予您阅读和使用权限。更新数据。如果一切都通过Web服务层,那将如何改变?同样,通过访问Web服务层,存在非常实际的成本 - 复杂性和性能。只有客户才能回答这笔费用是否值得。
答案 1 :(得分:3)
如果这是一个Web项目,则需要将运行用户的IIS服务器更改为域用户,并将sql server的权限授予该用户。 您可以在连接字符串上使用SSPI,如下所示。 像这样,您不需要在web.config上清楚地保留您的用户名或密码。
<configuration>
<system.web>
<identity impersonate="true"/>
</system.web>
和你的connectionString
"Integrated Security=SSPI;Initial Catalog=TestDb;Data Source=10.10.10.10"
答案 2 :(得分:3)
有许多客户争论IT专业人员的工作,就像有很多人去看医生要求用药而不是他们有什么疾病,因为他们已经知道了答案,因为他们在互联网上阅读了。
我的意思是,他们要求您构建应用程序,而您作为IT专业人员应该在应用程序按预期工作时最好地了解。你作为一个专业人士应该有球告诉你的客户,如果他认为可以更好地到达其他地方,他应该去那里或者自己建立应用程序;这是过去做的积极结果:)
关于安全;也许是因为他们有信心你可以加密web.config
并展示它们,但实际上它没有任何意义;如果有人可以访问服务器,他们可以解码它。另一方面,想要侵入您的数据库的人应该通过很多障碍。很难打破,也许是不可能的。另一个选择是简单地阻止来自外部网络的连接,网络或ip范围或其他任何东西我认为这不应该让人担心。
还有更多现实问题需要担心,例如阻止跨站点脚本和这些常见问题。
答案 3 :(得分:1)
客户端错误引入另一层不会自动提高安全性。
简而言之,使用SQL服务器角色进行数据访问,例如内置的data_reader和data_writer角色是一个很好的起点。始终为应用程序使用最合适的最小权限帐户。如果您只需要阅读数据,请使用只能阅读的帐户。
尽可能使用Windows身份验证,如果不可行,则至少加密连接字符串。
有关如何执行我所述内容的更多信息,请访问http://msdn.microsoft.com/en-us/library/ff650037.aspx#pagpractices0001_dataaccess
答案 4 :(得分:1)
一种可能性是加密web.config中的部分。因此,只有能够直接访问网络服务器的用户才能解密此部分。
以下是iisreg工具的帮助: http://msdn.microsoft.com/en-us/library/zhhddkxy.aspx
答案 5 :(得分:0)
您可以在数据库中启用加密连接,并告诉客户端连接是否加密,以便完全安全?
答案 6 :(得分:-1)
为了使其更安全,并让您的客户满意,您可以在计算机之间使用Tunneling。
您设置了数据库所在的服务器隧道程序,以及客户端计算机上的客户端隧道程序。您可以通过隧道连接将一台计算机连接到另一台计算机,并通过隧道连接进行数据库连接。
一切都是交换高安全性(如果隧道支持它,则压缩)。
http://en.wikipedia.org/wiki/Tunneling_protocol
http://en.wikipedia.org/wiki/HTTP_tunnel
Ps我只通过隧道连接到我的服务器,无论我做什么。
答案 7 :(得分:-2)
我从不喜欢使用网络配置。注册表更安全。
最佳做法是:
了解其他安全性
<强>来源:强>
来自ScottGu @ http://msdn.microsoft.com/en-us/library/Aa302406
<强>可扩展性:强>
关于可伸缩性:使用自定义管理软件,可以非常轻松地在Web场中创建\编辑注册表项。
http://weblogs.asp.net/scottgu/archive/2010/09/08/introducing-the-microsoft-web-farm-framework.aspx
对所有投票给我的人发表最后的说明。开箱即用的安全性还不够。安全是艺术,而不是科学。
黑客知道默认存储密码的位置......
ASP.NET 4.0粉丝
Microsoft使asp.net 4.0网站可以轻松部署注册表设置: