【发布时间】: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