我正在编写一个使用云数据库的公共分发 Windows 窗体应用程序。我需要在发布的 app.config 文件中加密连接字符串。我正在为这个项目使用实体框架和 .net 4.5。从我读到的内容(可能是错误的),EF 不会自动解密连接字符串。我该如何做到这一点?
问问题
5520 次
2 回答
0
您应该使用 Windows 身份验证。如果您给用户一个加密的连接字符串并期望他们将其传回未加密的,那么您必须为他们提供基本上解密公钥的方法,这是一个安全的不,不。您可以加密文件中的字符串,并让应用程序将其传递给 WCF 或 REST 服务,该服务持有私钥、解密、建立与数据库的连接以及对数据库进行查询。但这仍然使加密值与密码一样好。这就是为什么您需要使用 Windows 身份验证,以便用户可以提供他的凭据并授权他们。这样您就可以控制谁在访问数据库,并且用户是唯一可以访问其密码的人(理论上无论如何)。
这也是为什么 ASP.Net 具有此功能而 WinForm 应用程序不 ASP.Net 应用程序在受控服务器环境中运行的原因,在那里它们可以访问私钥而无需与世界共享。
于 2013-10-01T21:05:29.290 回答
-2
要扩展我的评论以使其成为答案,您可以使用aspnet_regiis
. 将您的 app.config 重命名为 web.config,然后按照中描述的步骤操作
加密将重新分发的 App.config 文件中的部分和/或设置
完成后,将文件重命名回来。
于 2013-10-02T10:52:41.063 回答