我的.NET应用程序允许动词隧道,建议禁用它。应用程序需要接受PUT和DELETE头文件以及GET和POST。
扫描正在将这些标头发送到接受POST的端点:
X-HTTP-METHOD: PUT
X-HTTP-Method-Override: PUT
X-METHOD-OVERRIDE: PUT
我做了大量的研究,很难找到一种方法来“禁用”动词隧道。似乎这些方法需要被允许,而不是相反。
例如,在.NET中,HttpMethodOverrideExtensions方法允许这些类型的头文件,我看到了上面发布的关于如何允许这三种头文件的多个教程。
我在回答中说应用程序默认情况下不允许动词隧道,因为允许它的方法不在应用程序的代码库中,对吗?
2条答案
按热度按时间rsaldnfx1#
我只有在Java中解决这个问题的经验,但我希望我的解决方案有一些到.NET的转换,这对您有帮助。Fortify的WebInspect扫描程序报告了“HTTP方法覆盖”。为了解决我的团队的问题,我实施了一个过滤器来侦听错误的标头(x-http-method,x-http-method-override,x-method-override),将状态设置为405,如果发现它们则中断。请参见下面的代码。我知道这不是最优雅的解决方案,但它是我找到的唯一一个满足扫描的(抛出错误并引导用户不满足)。
slwdgvem2#
我在另一个stackoverflow问题上找到了这个解决方案:
简而言之,这是最普遍接受的答案的问题,这是添加到您的web.config: