我已经阅读了跨站点请求伪造的 OWASP 指南,它指出“其他 HTTP 方法”,例如 PUT 和 DELETE,理论上可以用于 CSRF。
但是,对于同源策略,这些请求不会被执行。为什么 PUT/DELETE 会受到同源策略的影响而 POST 不会。
我已经阅读了跨站点请求伪造的 OWASP 指南,它指出“其他 HTTP 方法”,例如 PUT 和 DELETE,理论上可以用于 CSRF。
但是,对于同源策略,这些请求不会被执行。为什么 PUT/DELETE 会受到同源策略的影响而 POST 不会。
GET 和 POST 是用于基本链接、嵌入和提交表单的方法。这种站点之间的交互早于同源策略的发展。如果将相同的来源策略扩展到包含 POST 和 GET,那么许多站点可能会中断。
因此,任何可以通过链接、嵌入或表单创建的 POST 和 GET 都被排除在同源策略之外。但是不排除使用只能使用XHR创建的自定义标头或类似标头的 GET 和 POST,因为它们永远不会发生在早于同源策略的旧 Web 中。另请参阅CORS 规范是否会考虑缺少 Content-Type 标头来暗示“简单标头”?想要查询更多的信息。
PUT 和 DELETE 理论上可以用于 CSRF ......但是在同源策略下,这些请求不会被执行。
这仅在默认情况下是正确的。如果目标提供了适当的CORS 策略,那么 PUT 和 DELETE 也可以用于 CSRF。