有人向我指出了这篇文章
这似乎是说除 GET 和 POST 之外的所有 HTTP 动词本质上都不太安全,应该在 Web 服务器配置中禁用。
在我看来,这篇文章的论点完全是伪造的,并且是基于这样一个假设,即底层网络平台对其他动词的检查不如对 GET 和 POST 执行的检查严格。
我意识到,通过遵循最小特权原则并只开放你需要的动词,攻击面会减少,但某些动词本质上不安全的论点是否真的有效,我应该例如,避免在 REST 应用程序中使用 PUT 和 DELETE?
FWIW 我的平台是 ASP.NET,混合了 Web 表单和 MVC。
最佳答案
我认为您误读了这篇文章。
它的意思是,有一些 HTTP 动词可用于绕过流行 Web 服务器上的标准安全配置。
具体来说,如果您使用 HTTP GET 请求做的不仅仅是检索数据(例如,通过使用像 http://example.org/auth/root.jsp?cmd=adduser
这样的查询参数) ,并且您限制对 GET
动词的访问但忘记限制对 HEAD
动词的访问,攻击者仍然可以调用该 URL 而不会受到您的访问控制系统的挑战。
根据该文章,此漏洞“开箱即用”地存在于 IIS 中。
但是,由于 REST 的基本要点之一是 GET 不修改数据,因此根据定义,RESTful 解决方案不受此潜在漏洞的影响。
关于asp.net - 某些 HTTP 动词真的天生就不如其他动词安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34069056/