我正在学习如何为C#(3.5)应用程序加密ConnectionString。我阅读了关于保护连接字符串的.Net Framwork开发人员指南(http://msdn.microsoft.com/en-us/library/89211k9b(VS.80).aspx)。但不完全理解内容。
它说“The connection string can only be decrypted on the computer on which it was encrypted."
我们有一个发布机器,它将构建我们的应用程序,它将生成OurApp.exe.config,然后将其安装到许多产品机器上。是不是我们必须有这个加密过程与我们的应用程序分开并在单个产品机器上运行?
我们可能会使用“RSAProtectedConfigurationProvider
”。它提到我们需要encryption key
该提供商。我们何时以及如何提供加密密钥?
感谢,
答案 0 :(得分:3)
您只需运行一次加密过程。但是,在生成计算机密钥后,您需要在目标计算机的所有machine.config文件中传播该密钥。 machine.config应该位于:
%FRAMEWORKDIR%\%FRAMEWORKVERSION%\CONFIG
How To: Configure MachineKey in ASP.NET 2.0
:此链接包含有关配置配置密钥<machineKey validationKey="[generated value here]"
以及如何在计算机之间共享的部分。
decryptionKey="AutoGenerate,IsolateApps"
validation="SHA1" decryption="Auto" />
答案 1 :(得分:2)
1)是的,如果你使用这种方法,你会根据它安装的每台机器加密它。如果你每台机器都有不同的配置,这将是我的exp的正常方法。如果您尝试发送“秘密”连接字符串,这不是一个好方法。
2)如果您还没有看到,我认为本文将回答有关RSA提供商的问题...... http://msdn.microsoft.com/en-us/library/ff650304.aspx
如果这是您需要提供连接信息的客户使用的应用程序:
注意事项:不要认为通过加密配置,您可以真正保护自己免受运行应用程序的用户的侵害。在某些时候,该字符串需要由应用程序解密以用于连接到服务器。可以利用该应用程序来提供与其他应用程序的连接。简而言之,您不应该依赖此作为使用户远离数据库的唯一策略。良好的安全性始终是一项多方面的努力。
答案 2 :(得分:2)
有两种固定钥匙的方法(实际上是一种,但是在工具的初始点火之后它们朝不同的方向前进)。
希望这有帮助。
答案 3 :(得分:1)
使用机器密钥加密配置。这意味着只有具有该密钥的计算机才能解密它。最简单的方法是使用未加密的配置部署它,然后在软件运行时加密它,或使用单独的进程加密配置。您可以使用上面的code4life的答案
请参阅此MSDN指南 - http://msdn.microsoft.com/en-us/library/dtkwfdky.aspx