2010-03-04 66 views

回答

3

最安全的方式(假设Windows客户端和受支持的数据库服务器)是使用integrated authentication,并避免在所有连接字符串分配密码。

 
Data Source=servername;Initial Catalog=dbname;Integrated Security=SSPI; 

每个用户都需要访问数据库服务器。我发现最简单的方法是使用活动目录组 - 为数据库服务器提供适当的访问权限,并根据需要添加和删除该组中的用户。

3

对其进行手动加密或使用随EntLib一起分发的配置工具进行加密。

this should get you started.

编辑:当然,正如其他人所说,使用集成的安全是你最好的选择,但我明白,有时候,这是不是一种选择。

在这些情况下,您需要做一些额外的工作。我以前做过,并且知道它的工作原理。我将链接到一篇描述挑战的文章,并最终提供用于在Windows应用程序中执行此操作的工作解决方案。

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

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

+0

我对我的web应用程序使用这种方法,但是如何加密连接字符串与部署的Windows应用程序一起工作。用于加密连接字符串的密钥文件将需要与应用程序一起部署以解密连接字符串。这意味着任何人都可以解密它? – 2010-03-04 05:27:00

+0

@布鲁斯 - 通过部署,你的意思是在野外? – 2010-03-04 05:44:57

+0

是的。用Sqlce数据库说一个应用程序。 – 2010-03-04 05:59:45

0

这真的取决于你如何期望别人来获得在连接字符串。如果您担心应用程序的用户(不是开发人员),只需加密连接字符串并将加密的字符串置于应用程序中的常量中。在运行时使用该密钥来解密用于该常量的加密字符串,然后在部署该代码之前对其进行混淆。这是否可靠?当然不是,但它可能会阻止99.9%的人获得连接字符串。他们必须反汇编你的代码,并首先获得加密的字符串,然后他们必须有权访问密钥。如果您担心开发人员,那么只要他们无法访问生产中的源代码以及可能用于加密连接字符串的密钥,上述解决方案就可以正常工作。当然有人必须输入连接信息,但只能让该人访问它。希望这可以帮助。