gpt4 book ai didi

security - CSRF 是否可以通过 PUT 或 DELETE 方法实现?

转载 作者:行者123 更新时间:2023-12-03 06:07:41 25 4
gpt4 key购买 nike

CSRF 是否可以通过 PUT 或 DELETE 方法实现?或者使用 PUT 或 DELETE 是否会阻止 CSRF?

最佳答案

好问题!

在完美的世界中,我想不出执行 CSRF 攻击的方法。

  • 您无法使用 HTML 表单发出 PUT 或 DELETE 请求。
  • 图像、脚本标签、CSS 链接等都会向服务器发送 GET 请求。
  • XmlHttpRequest 和 Flash/Silverlight/Applets 等浏览器插件会阻止跨域请求。

因此,一般来说,不可能对支持 PUT/DELETE 动词的资源进行 CSRF 攻击。

也就是说,世界并不完美。可以通过多种方式进行此类攻击:

  1. Rails 等 Web 框架支持“伪方法”。如果您放置一个名为 _method 的隐藏字段,将其值设置为 PUT 或 DELETE,然后提交 GET 或 POST 请求,它将覆盖 HTTP 动词。这是一种支持从浏览器表单中进行 PUT 或 DELETE 的方法。如果您使用这样的框架,则必须使用标准技术来保护自己免受 CSRF

  2. 您可能会意外地在服务器上为 CORS 设置宽松的响应 header 。这将允许任意网站发出 PUT 和 DELETE 请求。

  3. 在某个时候,HTML5 计划在 HTML 表单中包含对 PUT 和 DELETE 的支持。但后来,他们取消了这种支持。不保证以后不会添加。有些浏览器可能实际上支持这些动词,这可能会对您不利。

  4. 某些浏览器插件中可能存在错误,可能允许攻击者发出 PUT/DELETE 请求。

简而言之,我建议保护您的资源,即使它们仅支持 PUT 和 DELETE 方法。

关于security - CSRF 是否可以通过 PUT 或 DELETE 方法实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11833061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com