当用户对站点进行身份验证时,该站点应该生成一个(加密性强的)伪随机值,并将其设置为用户机器上的 cookie ,与会话 id 分开。
(强调我的)
如果会话 id 是,为什么 CSRF 令牌需要存储在单独的 cookie 中:
- 随机值(攻击者无法猜测的值)
- 存储在 cookie 中(攻击者无法读取的值)
- 由服务器生成(攻击者无法写入的值)
为什么不简单地使用会话 ID 作为 CSRF 令牌?您仍然需要提交两次值(一次在 cookie 中,一次在表单中)并比较值,但不会为 CSRF 令牌使用单独的 cookie。