我发现一些资源告诉我,使 SQL Compact DB 被加密就像在连接字符串中指定密码一样简单。但是,我不愿意将密码留在我的 web.config 文件中。我知道我可以在运行时动态地为 DbContext 提供连接字符串,但即使在那里,我仍然在连接字符串中包含纯文本密码。如何最大限度地减少代码中此密码易受攻击的点?
问问题
434 次
2 回答
1
显然,如果托管公司可以访问服务器,您就无法获胜。如果他们真的想,你不能阻止他们学习密码。
所以你所能做的就是混淆密码。我认为一个很好的权衡是在源代码中硬编码密码,如下所示:
var plainPassword = Enconding.UTF8.GetString(Convert.FromBase64("encoded-pw-here"))
应该保护的是简单的字符串搜索等。我认为你不能或不应该做更多的事情。
于 2012-10-06T11:34:39.730 回答
0
为什么你害怕在服务器上有密码?大多数系统,例如database.yml 文件中的Rails,将它们的连接存储在某个地方。
但是你可以做的保护它是创建一个加密.dat 文件来保存你的连接。在您的 web.config 文件中,您只需放置连接的“名称”,然后您需要一个可以加密/解密您的连接字符串并在运行时将其放置到位的类。
您可以在这里找到一个示例项目:http: //www.codeproject.com/Articles/14150/Encrypt-and-Decrypt-Data-with-C
但这不会为您提供 100% 的安全性,我怀疑这是否值得。最好确保您的 Windows 保护程序得到正确保护,这样任何人都无法在未经许可的情况下访问它。
于 2012-10-06T08:50:17.830 回答