连接字符串安全保护

5
3个回答

3
假设使用Windows客户端和受支持的数据库服务器,则最安全的方法是使用集成身份验证,并完全避免在连接字符串中分发密码。
Data Source =服务器名称;Initial Catalog=数据库名称;Integrated Security=SSPI;
每个用户都需要访问数据库服务器。我发现使用活动目录组是最简单的方法-在数据库服务器上给组适当的访问权限,并根据需要添加和删除用户。

3

使用EntLib分发的配置工具或手动加密。

这应该可以帮助您入门。

编辑:当然,正如其他人所说,使用集成安全性是最好的选择,但我理解有时这不是一个选项。

在这些情况下,您需要做一些额外的工作。我以前做过,知道它有效。我将链接到一篇文章,描述了使用Windows应用程序完成此操作的挑战和最终工作解决方案。

警告:在单击此链接之前请戴上太阳镜。

http://guy.dotnet-expertise.com/PermaLink,guid,b3850894-3a8e-4b0a-aa52-5fa1d1216377.aspx


我在我的Web应用程序中使用这种方法,但是在已部署的Windows应用程序中如何加密连接字符串?用于加密连接字符串的密钥文件需要随应用程序一起部署以解密连接字符串。这意味着任何人都可以解密它? - Bruce Adams
@Bruce - 你的意思是已经部署,也就是在实际环境中运行了吗? - Sky Sanders
是的。假设一个带有Sqlce数据库的应用程序。 - Bruce Adams
1
@bruce - 那么第二个链接应该能帮助您完成此操作,并避免其中的一些问题。关于sqlce - 我强烈建议您查看http://sqlite.phxsoftware.com/。如果其功能符合您的需求,它将远胜过SqlCE。 - Sky Sanders

0

这真的取决于您希望某人如何获取连接字符串。如果您担心的只是应用程序的用户(不是开发人员),只需加密连接字符串并将加密字符串置于应用程序中的常量中即可。在运行时使用密钥解密您用于常量的加密字符串,然后在部署之前混淆您的代码。这样做是否完全可靠?当然不是,但它可能会阻止99.9%的人获取您的连接字符串。他们必须先反汇编您的代码并获取加密字符串,然后才能获得密钥。如果您担心开发人员,则上述解决方案同样适用,只要他们没有在生产中访问源代码以及可能用于加密连接字符串的密钥即可。当然,有人必须输入连接信息,但只需授予该人访问权限即可。希望这可以帮助到您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接