如何防止密码和其他敏感信息出现在ASP.NET转储中?

如何防止在IIS / ASP.NET转储文件中向ASP.NET网页提交和接收的密码和其他敏感数据?

重现的步骤

>使用Visual Studio 2010,创建一个ASP.NET MVC 3 Intranet应用程序。
>将其配置为使用IIS 7.5。
>打开它并注册一个帐户(以bob123为用户,Pa $$ w0Rd为密码。我假设sql Express数据库已创建并且站点完全正常运行。
>使用任务管理器,右键单击w3wp进程并创建转储。
>在能够以十六进制显示内容的编辑器中打开转储,例如SlickEdit。
>在十六进制转储中搜索“Pa $$ 0Rd”和“Pa $$ w0Rd”。你应该能够找到它的几个副本存储为ASCII,Unicode或编码。

请注意,您是否使用HTTPS无关紧要,因为它只加密通信。 ASP.NET将数据存储在内存或磁盘中。

问题

常见的智慧有它加密敏感数据,而不是存储在明确。但是,员工可能会收到IIS / ASP.NET应用程序的转储,并发现用户的密码和其他机密数据,因为此信息既未加密,也未被ASP.NET使用的内存在使用后清除。

这使他们面临风险,只是因为他们有权使用它。转储有时与合作伙伴(如Microsoft)共享,以帮助他们诊断他们的代码中的问题。它是诊断一些应用中真正复杂问题的必要部分。

我看的东西

>对密码和其他敏感数据使用securestring。但是,ASP.NET成员资格提供程序以及其他框架(如WCF)通常接受密码为System.String,这意味着这些副本仍然在转储中。
>看看在框架中是否有任何内容,以便在不再使用System.String时清除其副本。我找不到什么。
>调查是否可以清除用于请求和响应的内存,一旦IIS完成它,但我没有找到任何东西。
>我研究了可以加密文件IIS接收(作为HttpPostFile),使它们不存储在明确。我们可能收到非常机密的文档,并且每一步都是在服务器上加密和保护它们。但是,有人可以从IIS转储中清除它们。

我所希望的是告诉IIS / ASP.NET一个特定的请求/响应包含敏感数据和IIS / ASP.NET将清除内存时,使用它。

解决方法

根据定义的转储文件转储应用程序在转储时使用的所有内存,如果您要创建一个过滤器,以便排除某些事情,那么您可能永远不能确定您有足够的数据来解决问题。

你愿意将数据库/配置设置交给第三方吗?如果不是那么你可能不应该交出dumpfiles。 (恕我直言)

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....