[英]CSRF Token Generation in Javascript with Django
本质上,您提议的是Double Submit Cookies CSRF预防方法的一种变体。 之所以可行,是因为攻击者无法在您的域的浏览器中读取或写入Cookie值,因此无法复制要与表单一起提交的相同值。
当用户对网站进行身份验证时,该网站应生成(加密强度高)伪随机值
这是JavaScript方法的最大问题-JavaScript中的随机数生成器不是加密安全的。 您可以在这里尝试一种解决方案 -您的里程可能因浏览器而异。 捕获鼠标的移动听起来很有趣,但是使用这种方法时必须格外小心-您必须防止在未检测到任何形式的情况下提交任何形式,因为在实际CSRF攻击中可能就是这种情况。 如果可能的话,请避免使用安全性之类的东西,最好使事情简单化-复杂性是安全性的大敌。
我真的很喜欢SilverlightFox的解释,但我想我会添加一些评论。 您的服务器已经参与了至少第一个请求。 借此机会从模板中设置一个javascript变量,然后继续在页面的生命周期中使用它。
{% extends 'base.html' %}
<script>
window.csrf_token = "{% csrftoken %}";
</script>
它避免了在客户端生成令牌的复杂性,但仍允许您将令牌用于动态创建的任何表单。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.