我不明白使用“挑战令牌”会如何增加任何形式的预防:应该将什么值与什么进行比较?
来自OWASP:
通常,开发人员只需为当前会话生成一次此令牌。在初始生成此令牌后,该值将存储在会话中,并用于每个后续请求,直到会话到期。
如果我正确理解了这个过程,就会发生这种情况。
我在http://example.com登录并创建了一个包含此随机令牌的会话/cookie。然后,每个表单都包含一个隐藏输入,该输入还包含来自会话的随机值,该值在表单提交时与会话/cookie 进行比较。
但这有什么作用呢?您不只是获取会话数据,将其放入页面,然后将其与完全相同的会话数据进行比较吗?似乎是循环推理。这些文章一直在谈论遵循“同源策略”,但这没有任何意义,因为所有 CSRF 攻击都与用户同源,只是诱使用户执行他/她不打算执行的操作。
除了将令牌作为查询字符串附加到每个 URL 之外,还有其他选择吗?看起来非常丑陋和不切实际,并且使用户更难添加书签。