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