如何防止在IIS / ASP.NET转储文件中提交和接收ASP.NET网页的密码和其他敏感数据?
重现的步骤
请注意,使用HTTPS无关紧要,因为它只会加密通信。 ASP.NET将数据以明文形式存储在内存或磁盘中。
问题
通常有智慧加密敏感数据,而不是将其存储在清晰的数据中。但是,员工可能会收到IIS / ASP.NET应用程序的转储并发现用户的密码和其他机密数据,因为此信息既未加密,也未在使用后清除ASP.NET使用的内存。
这使他们处于危险之中,因为他们可以访问它。有时会与合作伙伴(例如Microsoft)共享转储,以帮助他们诊断代码中的问题。这是在一个人的应用程序中诊断一些非常复杂的问题的必要部分。
我看过的事情
我所希望的是告诉IIS / ASP.NET特定请求/响应包含敏感数据,并且IIS / ASP.NET将在使用它时清除内存。
答案 0 :(得分:1)
转储文件按定义转储 all 应用程序在转储时使用的内存,如果您要创建过滤器以便排除某些内容,那么您永远无法确定有足够的数据来解决问题。
您是否愿意将数据库/配置设置移交给第三方?如果没有那么你可能不应该交出dumpfiles。 (IMHO)
答案 1 :(得分:0)
我知道这不能直接回答这个问题,但为什么不以不同的方式看待这个问题。
您可以轻松地将一些javascript放在一起进行哈希客户端。我会将密码与随机的东西组合在一起,例如服务器发送的guid,只对一次使用有效。数据交换将不再包含密码,并且可以轻松地将哈希与服务器端进行比较。它仅对会话有效,因此查看转储数据的人将来无法使用哈希“自我验证”。
在文件方面,这些文件是如何上传的?直接来自网页?有很多javascript库进行加密(河豚),我肯定会在发送敏感文件时使用此选项。它确实有速度损失,但您可以确定数据是安全的。