我一定错过了什么......
所以我正在研究在web.config中加密数据库连接字符串和sql会话状态连接信息的最佳方法。我很快就在msdn上找到了解释,使用受保护的配置来加密web.config的部分: MSDN walkthrough on using Protected Configuration
所以我想的很好,有一种机制可以做到这一点,看起来非常简单。我到了演练的最后,他们提供了一个aspx页面的源代码,可用于解密所有连接字符串!!!!
有什么意义?我没有在这个Web服务器上运行任何ftp服务,任何人都可以看到web.config的唯一方法是他们是否可以访问发布网站的文件系统。如果他们有,那么他们所要做的就是使用提供的代码来解密。
我错过了什么?有没有更好的方法来加密这些?如果我推出自定义解决方案,它将适用于sql会话状态部分吗? (不要相信从web.config中移除手杖)
答案 0 :(得分:6)
假设您正在使用DPAPI提供程序,则至少需要对文件系统的写访问权才能对其进行解密。解密它的方法包括:
但是它可以防止未经授权的用户解密,该用户具有对文件系统的读访问权或文件系统的备份。
通常,您需要设置生产服务器,以便只有授权的管理员才能登录服务器或写入其文件系统。
开发人员可能具有远程读取访问权限以用于支持目的,并且无法远程解密配置文件。
使用标准库可以轻松加密/解密:困难的部分是确保只有经过授权的人才能访问密钥。
如果您正在使用DPAPI,那么您实际上是将密钥管理委派给Windows安全性。如果您使用其他提供商(如RSA),则需要将密钥存储在某处,并保护密钥免受未经授权的访问,例如使用ACL。