我最近从安全审计中听到HTTP Options一般不安全,Web服务器不应该允许它。有人可以解释原因吗?
答案 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
某些服务器将实现PUT
和DELETE
命令以直接在服务器的文件系统上工作,并且具有OPTIONS
可用将平稳地告诉您这两种方法均受支持。我个人不知道为什么OPTIONS
表现不好,因为尝试PUT
还会告诉您它是否受支持。因此,无论是否安装了OPTIONS
,如果您使用的是愚蠢的服务器实现,黑客都可以接管您的服务器。
就我个人而言,我从未见过支持PUT
和DELETE
的服务器来直接更新服务器文件!现在,如果您没有REST或WebDav或不需要CORS,我将关闭OPTIONS
功能,因为它实际上没有用。