某些HTTP动词真的比其他动词更不安全吗?

3

有人向我推荐了这篇文章:

http://resources.infosecinstitute.com/http-verb-tempering-bypassing-web-authentication-and-authorization/

文章中似乎在说,除了 GET 和 POST 之外的所有 HTTP 动词都不安全,并且应该在 Web 服务器配置中禁用。

我认为这篇文章的论点完全是无稽之谈,其基础假设是底层 Web 平台对其他动词的检查不如对 GET 和 POST 严格。

我知道通过遵循最小特权原则只开放所需的动词可以减少攻击面,但是是否真的有一些动词本质上不安全,并且例如在 REST 应用中我应该避免使用 PUT 和 DELETE 呢?

值得一提的是,我的平台是 ASP.NET,包括 Web Forms 和 MVC。


2
这是一篇有点儿愚蠢的文章。HTTP 就是 HTTP,用户可以向您的服务器发送任何请求。真正存在安全隐患的是您的服务器对这些请求的处理方式。 - Marc B
1个回答

1
我认为你误读了这篇文章。
它所说的是有一些HTTP动词可以用来绕过流行Web服务器上的标准安全配置。
具体来说,如果您使用HTTP GET请求来执行除检索数据之外的操作(例如使用查询参数,如http://example.org/auth/root.jsp?cmd=adduser),并且您限制对GET动词的访问但忘记限制对HEAD动词的访问,攻击者仍然可以调用该URL而不受访问控制系统的挑战。
根据文章,这个漏洞在IIS中“开箱即用”。
然而,因为REST的一个基本点是GET不修改数据,所以符合RESTful的解决方案从定义上不受这种潜在漏洞的影响。

我完全同意。问题在于示例中设置的配置规则并不是拒绝所有的 - 它们只是黑名单式地列举了动词和路径,并没有考虑其他可能性。 - SilverlightFox

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接