【答疑解惑】使用PUT或DELETE方法可以实现CSRF吗?
2023-4-29 00:4:38 Author: 利刃信安攻防实验室(查看原文) 阅读量:14 收藏

答案是:一般情况下,没有任何办法可以模拟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试试看:

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

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

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


文章来源: http://mp.weixin.qq.com/s?__biz=MzU1Mjk3MDY1OA==&mid=2247503468&idx=4&sn=4872358a72df724c24fc541fb2a4cf69&chksm=fbfb7ea1cc8cf7b7e640d33709ff896369c6c6202ae844ec1c8c14056014a1749433a1b5bab6#rd
如有侵权请联系:admin#unsafe.sh