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