连接 ASP.NET 3.5 Web 应用程序和 SQL Server 数据库的最安全方法是啥?

Posted

技术标签:

【中文标题】连接 ASP.NET 3.5 Web 应用程序和 SQL Server 数据库的最安全方法是啥?【英文标题】:What is the most secure way to connect a ASP.NET 3.5 web application and SQL Server database?连接 ASP.NET 3.5 Web 应用程序和 SQL Server 数据库的最安全方法是什么? 【发布时间】:2009-10-19 01:35:51 【问题描述】:

我有一个用 .net 3.5 开发的 Web 应用程序和一个 SQL Server 数据库。

当前身份验证方法是 web.config 中的连接字符串,将身份验证详细信息从纯文本中移出似乎是个好主意。

所以,我有两个问题:

    可信连接 - 这里的密码策略很严格,需要经常更改。这是否意味着每次网站过期时我都必须更新网站密码?

    还有其他/更好的选择吗?

【问题讨论】:

这是企业内网吗?您对每个通过您的应用登录数据库的用户有另一条评论。 是的,它是一个企业内部网,所以所有用户都将通过 AD 进行身份验证 【参考方案1】:

作为可信连接的替代方案,您可以查看this set of articles,了解如何加密您的 web.config。

简而言之,如果您从命令行调用

aspnet_regiis -pe "connectionStrings" -app "/SampleApplication" -prov "RsaProtectedConfigurationProvider"

默认站点的应用程序SampleApplication 的web.config 中的connectionStrings 部分将使用RSA 加密。

【讨论】:

这可行,但这里的密码策略需要我不断更新 web.config。 (我想我可以忽略该策略并保留一个用户名/密码对,但这不是我真正的决定......)【参考方案2】:

我认为输入用户名/密码更好,因为我不希望运行我的 IIS 服务器的用户访问大量数据库。我希望它集中在哪里,对于这个应用程序有一个用户并且该用户只能访问这个数据库。

您确实需要确定您的 web.config 文件是安全的,因此您确实需要安全。

如果您想要更高的安全性,您可以使用依赖注入框架,并注入具有用户名/密码的编译类,然后使用该连接字符串。如果您想要更多的安全性,这个类可能会被混淆。

【讨论】:

干杯 james - 您是否在此暗示,通过使用受信任/集成的安全性,我将无法为数据库分配适当的权限? @nailitdown - 我认为如果您有一个用户可以访问多个数据库,那么锁定一个数据库会更困难,假设您在同一台 IIS 服务器上有多个 Web 应用程序。我对这类事情往往偏执,可能比大多数开发人员更偏执。【参考方案3】:

不,您不必不断更改受信任的连接详细信息。您不会将密码存储在那里,因此密码更改不会影响您。 (这是如果您使用基本身份验证,让用户以自己的身份连接到 SQL 框)

但是 - 如果您的应用程序池以特定用户身份运行,并且该用户的密码已更改,则您需要对其进行更新。您可以考虑让用户的密码不会为此过期。

【讨论】:

谢谢 - 不幸的是我无法登录(开放 ID 提供商被阻止)所以无法投票 这很奇怪。它识别出您可以发表评论,但不能支持(或可能标记为答案)? 是的,这只是一个访客帐户,我给的名字和我的普通帐户一样...似乎问题/cmets 很好,但没有投票【参考方案4】:

可信连接不是一个选项?频繁更改的密码不应成为您做出决定的限制因素,因为您不必输入密码。

另一种选择是encrypting the connection string。

【讨论】:

对,作为一个受信任的连接,我信任每个连接到网站的经过身份验证的用户,然后用他们自己的帐户连接到数据库......对吗? 我相信你也可以调查冒充,msdn.microsoft.com/en-us/library/aa292118(VS.71).aspx。这也可能是有用的信息:***.com/questions/382383/…

以上是关于连接 ASP.NET 3.5 Web 应用程序和 SQL Server 数据库的最安全方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

.NET 3.5/VS 2008 上 ASP.NET Web 服务的自定义 HTTP 基本身份验证

如何在 ASP.NET Web 应用程序中为 Windows Mobile 创建 SQL Compact 3.5 数据库?

ASP.Net 3.5 中的 CORS

log4net 与 ASP.NET 3.5 问题

转载:在ASP.net 3.5中 用JSON序列化对象(两种方法)

如何在 asp.net Web 窗体上实现 Ninject 或 DI?