为什么HTTP选项请求不安全

时间:2016-12-19 21:37:24

标签: rest http tomcat

我最近从安全审计中听到HTTP Options一般不安全,Web服务器不应该允许它。有人可以解释原因吗?

3 个答案:

答案 0 :(得分:4)

HTTP选项动词可以在您的Web服务器上泄露配置/调试数据,因此只有在合法需要时才允许这样做。阅读有关安全堆栈交换的这篇文章

https://security.stackexchange.com/questions/21413/how-to-exploit-http-methods

REST API使用选项,我相信它应该保持启用状态。

答案 1 :(得分:1)

OPTIONS是一种诊断方法,它返回一条主要用于调试等的消息。令人惊讶的是,此消息基本上报告了哪些HTTP方法在Web服务器上处于活动状态。实际上,这在现在很少用于合法目的,但它确实为潜在的攻击者提供了一些帮助:它可以被认为是找到另一个漏洞的捷径。 现在,这本身并不是一个真正的漏洞;但由于它没有真正的用途,它只会影响你的攻击面,理想情况下应禁用它。 注意:尽管如此,OPTIONS方法IS现在用于多种合法目的,例如一些REST API需要OPTIONS请求,CORS需要飞行前请求,等等。因此,确实存在应该启用OPTIONS的情况,但默认情况下仍应“禁用,除非需要”。

来源:https://security.stackexchange.com/questions/21413/how-to-exploit-http-methods

答案 2 :(得分:0)

REST服务器的一个有趣之处是,它们不太可能告诉您允许使用哪些方法。例如,它可能会产生这样的响应:

405 HTTP/1.1
Server: FooBar v0.1
Allow: POST,GET,DELETE,OPTIONS

OPTIONS命令返回相似的信息,它还告诉您是否将支持某些标头。

OPTIONS * HTTP/1.1
Host: api.example.com
Access-Control-Request-Method: POST
Access-Control-Request-Headers: X-PINGOTHER, Content-Type

在答案中您得到:

Access-Control-Allow-Methods: POST,GET,DELETE,OPTIONS
Access-Control-Allow-Headers: X-PINGOTHER, Content-Type

因此,我们看到的信息与上述405错误中的信息相同。

它支持所有CORS功能,因此可以包含Origin并回复它接受(或不接受)所述来源:

Origin: https://api.example.com

将得到答复:

Access-Control-Allow-Origin: https://api.example.com

某些服务器将实现PUTDELETE命令以直接在服务器的文件系统上工作,并且具有OPTIONS可用将平稳地告诉您这两种方法均受支持。我个人不知道为什么OPTIONS表现不好,因为尝试PUT还会告诉您它是否受支持。因此,无论是否安装了OPTIONS,如果您使用的是愚蠢的服务器实现,黑客都可以接管您的服务器。

就我个人而言,我从未见过支持PUTDELETE的服务器来直接更新服务器文件!现在,如果您没有REST或WebDav或不需要CORS,我将关闭OPTIONS功能,因为它实际上没有用。