为什么在 HTTP 服务器上不允许使用 OPTIONS 方法?
为什么在 HTTP 服务器上不允许使用 OPTIONS 方法?
信息安全
http
服务器
2021-08-17 00:50:04
2个回答
安全的一个重要部分是通过删除任何不需要的功能来减少攻击面。通常这也是测试较少的功能,因此可能是意外攻击的载体。例如,Web 应用程序中可能存在特定于 GET、POST 并且忽略任何其他方法的限制/授权。另一方面,应用程序代码的一部分可能会忽略请求方法,因此可以使用不受保护的请求方法访问受保护的资源。因此删除 OPTIONS、HEAD、TRACE 等是有意义的,以防不使用这些。
但是,可能需要与CORS相关的 OPTIONS以允许跨源请求。在这种情况下,删除它会影响功能,因此不应删除它。
一般来说,将可能有问题的黑名单请求方法列入黑名单是个坏主意。相反,应该进行白名单,即只允许应用程序正确处理已知的请求方法。
其他人指出您希望限制攻击面,并注意某些 Ajax 站点合法地使用 OPTIONS。无论如何,我想与您分享最近的经验。
我们测试了一个站点,发现它容易受到可执行文件上传的攻击。粗略地说,您可以上传一个 JSP 文件作为您的头像,然后执行该 JSP 文件并控制服务器。
客户端第一次尝试修复阻止了使用 GET 请求获取 JSP。但是,我们发现仍然可以使用 OPTIONS 请求执行 JSP。您不会得到 JSP 输出 - 但很容易编写 JSP 代码以使用带外机制连接回来。
在这种情况下,允许 OPTIONS 允许远程服务器妥协。
R 评论说这不是 OPTIONS 的错。这是真的,这是错误的编码。但是,如果 OPTIONS 作为纵深防御措施被全面禁用,则该站点将无法被利用。
其它你可能感兴趣的问题