困在了很奇怪的问题上,弄不出怎么处理。因此,我有托管在IIS 10中的asp web api应用程序。我使用IIS重写模块和出站规则来删除任何服务器头:
<outboundRules rewriteBeforeCache="true">
<rule name="Remove Server header">
<match serverVariable="RESPONSE_SERVER" pattern=".*" />
<action type="Rewrite" value="" />
</rule>
</outboundRules>
除了我使用调试动词发送请求时,它总是像一个符咒一样工作。在这种情况下,它返回服务器头和响应体,说明没有实现调试。我试图通过使用下一个设置来解决这个问题:
<security>
<requestFiltering removeServerHeader="true" >
<verbs allowUnlisted="true">
<clear/>
<add verb="DEBUG" allowed="false"/>
</verbs>
</requestFiltering>
</security>
顺便说一句,requestFiltering removeServerHeader="true“也会删除服务器头(当IIS重写被禁用时)。同样,在所有情况下,除调试请求外。技术上不允许调试也不会给我带来什么,我不再得到请求的主体,但是仍然可以得到服务器信息的服务器头。我也尝试了自定义模块,也没有运气。
我还能做些什么来隐藏用于调试请求的Server变量?
发布于 2022-12-16 20:17:47
ASP.NET有一个web.config
,用于设置站点的调试状态。在web.config
文件中,示例将如下所示。
由于ASP.NET可能有不同的站点路径,因此需要确保正确设置每个web.configs。
<system.web>
<compilation debug="true">
</compilation>
</system.web>
这用于调试目的,但如果不小心管理,则可以利用该漏洞。
这方面的参考是:站点行为-应用程序调试
我希望这能帮到你。致以敬意,
https://serverfault.com/questions/956012
复制相似问题