【答疑解惑】使用PUT或DELETE方法可以实现CSRF吗?

admin 2023年4月23日22:28:09评论73 views字数 642阅读2分8秒阅读模式

答案是:一般情况下,没有任何办法可以模拟PUT和DELETE方法实现CSRF。

  • 不能使用HTML表单进行PUT或DELETE请求。

  • 图像,脚本标签,CSS链接等都发送GET请求到服务器。

  • XmlHttpRequest和浏览器插件(如Flash / Silverlight / Applets)将阻止跨域请求。

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

这就是说,世界并不完美。可能有几种方式可以使这种攻击成为可能:

1.Web框架(如Rails)支持“伪方法”。如果把一个名为_method的隐藏字段设置为PUT或DELETE,然后提交GET或POST请求,它将覆盖HTTP动词。这是一种从浏览器表单中支持PUT或DELETE的方法。如果正在使用这样的框架,你将不得不使用标准技术来保护CSRF

例如:可以用另外一种重写方法来测试一下,我们在POST方法后加上_method=PUT试试看:

【答疑解惑】使用PUT或DELETE方法可以实现CSRF吗?

2.可能会意外地在您的服务器上设置了CORS的松散响应标头。这将允许任意网站做PUT和DELETE请求。

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

4.某些浏览器插件中可能只是存在一个漏洞,可能允许攻击者发出PUT / DELETE请求。

【答疑解惑】使用PUT或DELETE方法可以实现CSRF吗?

原文始发于微信公众号(利刃信安攻防实验室):【答疑解惑】使用PUT或DELETE方法可以实现CSRF吗?

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年4月23日22:28:09
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【答疑解惑】使用PUT或DELETE方法可以实现CSRF吗?https://cn-sec.com/archives/1687620.html

发表评论

匿名网友 填写信息