使用受保护的配置加密web.config是没有意义的?

时间:2009-03-25 17:48:20

标签: .net asp.net security encryption web-config

我一定错过了什么......

所以我正在研究在web.config中加密数据库连接字符串和sql会话状态连接信息的最佳方法。我很快就在msdn上找到了解释,使用受保护的配置来加密web.config的部分: MSDN walkthrough on using Protected Configuration

所以我想的很好,有一种机制可以做到这一点,看起来非常简单。我到了演练的最后,他们提供了一个aspx页面的源代码,可用于解密所有连接字符串!!!!

有什么意义?我没有在这个Web服务器上运行任何ftp服务,任何人都可以看到web.config的唯一方法是他们是否可以访问发布网站的文件系统。如果他们有,那么他们所要做的就是使用提供的代码来解密。

我错过了什么?有没有更好的方法来加密这些?如果我推出自定义解决方案,它将适用于sql会话状态部分吗? (不要相信从web.config中移除手杖)

1 个答案:

答案 0 :(得分:6)

假设您正在使用DPAPI提供程序,则至少需要对文件系统的写访问权才能对其进行解密。解密它的方法包括:

  • 将包含解密代码的aspx页面复制到服务器并导航到它
  • 登录服务器并运行应用程序进行解密。

但是它可以防止未经授权的用户解密,该用户具有对文件系统的读访问权或文件系统的备份。

通常,您需要设置生产服务器,以便只有授权的管理员才能登录服务器或写入其文件系统。

开发人员可能具有远程读取访问权限以用于支持目的,并且无法远程解密配置文件。

使用标准库可以轻松加密/解密:困难的部分是确保只有经过授权的人才能访问密钥。

如果您正在使用DPAPI,那么您实际上是将密钥管理委派给Windows安全性。如果您使用其他提供商(如RSA),则需要将密钥存储在某处,并保护密钥免受未经授权的访问,例如使用ACL。