需要将CSRF令牌名称和值放入其中吗标签使用 like:
e.g:
<meta content="authenticity_token" name="csrf-param" />
<meta content="4sWPhTlJAmt1IcyNq1FCyivsAVhHqjiDCKRXOgOQock=" name="csrf-token" />
我读过有关将 CSRF 值保留在 cookie 中的概念,但没有找到为什么要保留在其中 tag.
To 防止CSRF https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html您需要一个与请求一起提交的值,该值不能由恶意站点发送。身份验证 cookie 不适合,因为如果攻击者可以使浏览器向受害站点发送请求,则 cookie 将自动提交。
例如,通过 JavaScript 提交表单www.evil.com
攻击用户的会话www.example.com
:
<form method="post" action="https://www.example.com/executeAction">
<input type="hidden" name="action" value="deleteAllUsers">
</form>
<script>document.forms[0].submit()</script>
在页面内存储反 CSRF 令牌是OWASP https://www.owasp.org/建议的解决方案用于防止其他网站提交表单,因为用户会话中的随机令牌无法被读取www.evil.com
因为同源政策 http://en.wikipedia.org/wiki/Same-origin_policy阻止 JavaScript 开启www.evil.com
阅读页面内容www.example.com
.
这些令牌可以存储在页面内的任何位置。最常见的是,它会在隐藏的表单字段中,但它们也可以存储在HTML 5 数据属性 https://johnresig.com/blog/html-5-data-attributes/。似乎使用meta
标签只是另一种存储方式,JavaScript 可以将其包含在页面提交的任何表单中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)