我有一个 Django 站点,它使用 Django 的 csrf-token 来防止 csrf 攻击。公众可以访问其中一种表格,包括未登录的人。
Csrf Token 应该提供对跨域请求的保护。
编辑:(引用我的评论)“但是,如果在不需要授权的情况下允许发布请求,csrf 并不比一个琐碎的垃圾邮件过滤器更好(验证码在这里会做得更好)。事实上,这应该是一个安全风险在不需要身份验证的页面中包含 CSRF 令牌(例如 30 分钟后过期)。(但我的网站正在这样做,这就是我首先发表这篇文章的原因)”
此外,在这种情况下,可以在浏览器 js 控制台中获取该页面,通过某些特定的 xpath 获取 csrf 令牌,然后使用该 csrf 发布一些任意数据。此外,步骤很容易重现,可以为该站点或任何 Django 站点设计特定的攻击,因为您每次都会找到除“csrfmiddlewaretoken”之外的 csrf 令牌(包括 reddit、pinterest 等网站)。
据我所知,除了让它有点困难之外,csrf 令牌并没有太大帮助。
我错过了它的一个方面吗?我的实施错了吗?如果我是对的,让你的 csrf 令牌在你的 html 源代码中飞来飞去(尤其是那些不需要任何身份验证的)是愚蠢的吗?