Security CSRF是否可以使用PUT或DELETE方法?
CSRF是否可以使用PUT或DELETE方法?或者使用PUT或DELETE是否会阻止CSRF?否。依赖HTTP动词不是防止CSRF攻击的方法。这一切都取决于你的网站是如何创建的。你可以使用PUTs作为POST,DELETE作为GET,这并不重要 要防止CSRF,请采取以下步骤: 网站上有各种可用的CSRF对策:Security CSRF是否可以使用PUT或DELETE方法?,security,csrf,Security,Csrf,CSRF是否可以使用PUT或DELETE方法?或者使用PUT或DELETE是否会阻止CSRF?否。依赖HTTP动词不是防止CSRF攻击的方法。这一切都取决于你的网站是如何创建的。你可以使用PUTs作为POST,DELETE作为GET,这并不重要 要防止CSRF,请采取以下步骤: 网站上有各种可用的CSRF对策: 在所有表单提交和副作用URL中都需要一个秘密的、特定于用户的令牌来防止CSRF;攻击者的站点无法放置 在其提交的文件中加入权利标记 要求客户端在用于执行任何安全操作的同一HTTP请求中
- 在所有表单提交和副作用URL中都需要一个秘密的、特定于用户的令牌来防止CSRF;攻击者的站点无法放置
在其提交的文件中加入权利标记 - 要求客户端在用于执行任何安全操作的同一HTTP请求中提供身份验证数据 影响(资金转移等)
- 限制会话Cookie的生存期检查HTTP Referer标头或(和)
- 检查HTTP源标头[16]
- 确保没有clientaccesspolicy.xml文件授予对Silverlight控件的意外访问权[17]
- 确保没有crossdomain.xml文件授予对Flash电影的意外访问权[18]
- 验证请求的标头是否包含X-Requested-With。RubyonRails(v2.0之前)和Django(v1.2.5之前)使用。 这种保护已被证明是不安全的[19] 浏览器插件和重定向可允许攻击者 为任何网站的请求提供自定义HTTP头,因此 允许伪造的请求
从理论上讲,这是不可能的,因为无法启动跨域PUT或DELETE请求(CORS除外,但这需要飞行前请求,因此需要目标站点的合作)。在实践中,我不会依赖这一点-许多系统都受到了攻击,例如,假设CSRF文件上传攻击不可能发生(不应该发生,但某些浏览器错误使其成为可能)。好问题 在一个完美的世界里,我想不出执行CSRF攻击的方法
- 不能使用HTML表单发出PUT或DELETE请求李>
- 图像、脚本标记、CSS链接等都向服务器发送GET请求
- XmlHttpRequest和Flash/Silverlight/Applets等浏览器插件将阻止跨域请求李>
\u method
的隐藏字段,将其值设置为put或DELETE,然后提交GET或POST请求,它将覆盖HTTP谓词。这是一种支持从浏览器表单中放置或删除的方法。如果您使用这样一个框架,那么您必须使用标准技术保护自己免受CSRF的影响简而言之,我建议保护您的资源,即使它们只支持PUT和DELETE方法。CSRF确实可以使用PUT和DELETE,具体取决于服务器的配置 考虑CSRF最简单的方法是在浏览器中打开两个选项卡,一个对用户身份验证的应用程序打开,另一个对恶意网站打开
如果恶意网站向您的应用程序发出javascript请求,浏览器将随请求一起发送标准cookie,从而允许恶意网站使用已验证的会话“伪造”请求。该网站可以做任何类型的请求,包括获取、放置、发布、删除等 防范CSFR的标准方法是发送恶意网站无法知道的请求。这可以像一个cookie的内容一样简单。虽然来自恶意站点的请求将发送Cookie,但它实际上无法访问Cookie,因为它正由另一个域提供服务,并且浏览器安全性阻止它访问另一个域的Cookie 将cookie内容称为“令牌”。您可以将令牌与请求一起发送,并在服务器上确保在继续请求之前已正确提供“令牌” 下一个问题是,如何在所有不同的请求中发送该值,而DELETE特别困难,因为它不是为任何类型的负载而设计的。在我看来,最干净的方法是使用令牌指定请求头。类似这样的x-security-token=token。这样,您可以查看传入请求的头,并拒绝任何缺少令牌的请求 在过去,标准ajax安全性限制了通过ajax在恶意服务器上执行的操作,但是,现在,该漏洞取决于您对服务器的访问控制配置的设置方式。有些人打开他们的服务器,以便更容易进行跨域调用或让用户创建自己的RESTful客户端等,但这也使得恶意站点更容易利用,除非采取了上述CSRF预防方法。是的,通过put和DELETE方法可以实现CSRF,但只有通过非限制性政策启用CORS 我不同意