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

前端之家收集整理的这篇文章主要介绍了如何防止密码和其他敏感信息出现在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。 (恕我直言)

猜你在找的asp.Net相关文章