【发布时间】:2010-10-11 18:45:15
【问题描述】:
从安全角度来看,在 Web 应用程序中管理连接字符串的最佳方法是什么?我已经用几种不同的方式做到了。我已将它们存储为纯文本 web.config 设置键。我还创建了一个“常量”类,它为每个连接字符串提供了公共只读字符串属性。
有没有人有任何建议来管理连接字符串,这样我就不用担心它们会被恶意发现?我绝对愿意接受加密。
【问题讨论】:
标签: asp.net sql connection-string
从安全角度来看,在 Web 应用程序中管理连接字符串的最佳方法是什么?我已经用几种不同的方式做到了。我已将它们存储为纯文本 web.config 设置键。我还创建了一个“常量”类,它为每个连接字符串提供了公共只读字符串属性。
有没有人有任何建议来管理连接字符串,这样我就不用担心它们会被恶意发现?我绝对愿意接受加密。
【问题讨论】:
标签: asp.net sql connection-string
您可以在您的 web.config 文件中encrypt your connection strings。
将连接字符串作为属性或常量存储在类中是不安全的。任何使用反汇编程序的人都可以看到您的连接字符串。
最好的方法是配置加密。
【讨论】:
您可以使用命令行工具 aspnet_regiis 加密和解密 web.config 的部分:
加密: aspnet_regiis -pef "connectionStrings" "c:\folder\"
解密: aspnet_regiis -pdf "connectionStrings" "c:\folder\"
【讨论】:
如果您可以完全控制服务器,您还可以将连接字符串存储在 Machine.Config 中。如果您有很多应用程序都使用同一个数据库服务器,这会很方便。
我不确定它是否值得加密,因为您必须首先访问服务器才能查看 machine.config。如果您的服务器遭到入侵,Encyrption 不会阻止黑客从配置文件中提取凭据。
【讨论】:
@vartec:这不是一个 SNAFU..
如果您使用不会破坏任何 UTF8 或 Unicode 编码的标准 .NET 加密机制对其进行加密,IIS 确实可以读取加密文本。 Microsoft 也鼓励将此作为最佳实践。
您可以从这里看到一个关于加密连接字符串的示例:
“如何:使用数据源控件时保护连接字符串”
【讨论】: