![HTTP 调试方法揭示 IIS 上的服务器标头](https://linux22.com/image/733855/HTTP%20%E8%B0%83%E8%AF%95%E6%96%B9%E6%B3%95%E6%8F%AD%E7%A4%BA%20IIS%20%E4%B8%8A%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%A0%87%E5%A4%B4.png)
遇到了非常奇怪的问题,不知道该如何处理。因此,我在 IIS 10 中托管了一个 asp web api 应用程序。我使用 IIS Rewrite 模块和出站规则来删除任何服务器标头:
<outboundRules rewriteBeforeCache="true">
<rule name="Remove Server header">
<match serverVariable="RESPONSE_SERVER" pattern=".*" />
<action type="Rewrite" value="" />
</rule>
</outboundRules>
它总是能很好地工作,除了当我使用 DEBUG 动词发送请求的情况。在这种情况下,它返回服务器标头和响应主体,表明未实现调试。我尝试使用下一个设置来解决这个问题:
<security>
<requestFiltering removeServerHeader="true" >
<verbs allowUnlisted="true">
<clear/>
<add verb="DEBUG" allowed="false"/>
</verbs>
</requestFiltering>
</security>
顺便说一句,requestFiltering removeServerHeader="true" 还会删除服务器标头(在禁用 IIS Rewrite 的情况下)。同样,在所有情况下,除 DEBUG 请求外。从技术上讲,禁止 DEBUG 也不会给我带来任何好处,我不再获取请求主体,但仍然可以获取带有服务器信息的服务器标头。我还尝试了自定义模块,但同样没有成功。
我还能做些什么来隐藏 DEBUG 请求的服务器变量?
答案1
ASP.NET 有一个web.config
用于设置站点 DEBUG 状态的函数。文件中的示例如下所示web.config
。
由于 ASP.NET 可能有不同的站点路径,因此您需要确保每个 web.configs 都正确设置。
<system.web>
<compilation debug="true">
</compilation>
</system.web>
这用于调试目的,但如果管理不善可能会被利用。
这个的参考资料是: 网站行为 - 应用程序调试
希望对您有所帮助。问候,