HTTP 调试方法揭示 IIS 上的服务器标头

HTTP 调试方法揭示 IIS 上的服务器标头

遇到了非常奇怪的问题,不知道该如何处理。因此,我在 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>

这用于调试目的,但如果管理不善可能会被利用。

这个的参考资料是: 网站行为 - 应用程序调试

希望对您有所帮助。问候,

相关内容