【问题标题】:HttpResponse Header Information Leakage on Server Error (Verbose Headers)服务器错误时的 HttpResponse 标头信息泄漏(详细标头)
【发布时间】:2021-11-23 21:11:11
【问题描述】:

过去,我通过 HttpResponse 标头处理过与默认服务横幅/详细标头/信息泄漏相关的安全问题。这些问题很常见,对于 Asp.Net - IIS 服务器来说通常看起来像这样。

服务器:Microsoft-IIS/10.0

X-AspNet-版本:4.0.30319

X-Powered-By:ASP.NET

这些类型的问题很常见,而且处理起来通常很简单,通常是通过 web.config 更新或 URLRewrite 规则来删除冗长的标头。

但是,我最近偶然发现的一个问题是,当服务器遇到错误时,这些标头不会被删除。例如,404(未找到)错误仍会附加这些标头。事实上,大多数错误响应都无法正确删除信息泄漏标头。我做了一些搜索,发现这个问题没有得到很好的记录,事实上它从来没有出现在我们的一项笔测试中。

我很好奇是否有其他开发人员处理过这个问题,特别是响应代码为错误时 HttpResponse Headers 中的信息泄漏。如果是这样,你是如何解决的。我正在使用 Microsoft、Asp.Net、IIS 技术,但仍然好奇其他技术/服务器是否有此问题。

【问题讨论】:

  • HTTP Response Header 并不会真正被移除,只是隐藏了而已,但应该不会在服务器遇到错误时受到影响(可能在某些特殊情况下除外),您尝试过哪些方法,也许你可以参考这个链接:https://techcommunity.microsoft.com/t5/iis-support-blog/remove-unwanted-http-response-headers/ba-p/369710.
  • @samwu 谢谢队友,但我已经尝试了所有这些方法,它们在 200 响应时工作正常,但对于 4xx 等则不行。请查看您发给我的链接上的最后一条评论,“它在 400 错误的 200 状态代码上运行良好,服务器标头在 404 错误时显示“Microsoft-HTTPAPI/2.0”,服务器标头在 200 上仍显示“Microsoft-IIS/8.5”,服务器标头根据我的值显示“未知”重写模块。我的注册表项是 DisableServerHeader = 1 为什么它不起作用?我正在使用带有 IIS 8.5 的 windows server 2012 R2"
  • 我认为最好的情况是删除负载均衡器级别的标头,将它们添加到负载均衡器 iRule 黑名单中,请参阅下面的答案。

标签: asp.net iis http-headers verbose


【解决方案1】:

感谢 Cody(安全冠军)的回复。

在这里恢复一个旧线程,但我们有很多应用程序可以缓解这个问题。我们实际上是在负载平衡器级别完成的,因此所有响应(错误或其他)都被视为相同

我们正在使用 iRule for F5 - iRules Home

https://clouddocs.f5.com/api/irules/

irule 有一个列入黑名单的标头名称数组,并且只删除每个响应中的标头名称

如果您尝试在 AWS 或其他托管负载平衡机制中完成同样的事情,不幸的是我不确定您将如何去做

【讨论】:

    猜你喜欢
    • 2010-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-08
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多