csrf token 生成与验证是如何做的呢?

seq_ack
  • 125

1.服务器会在cookie中保存一个csrf_token_key, 用作钥匙。
2.服务器会在页面生成时,获取csrf_token_key这个钥匙, 生成一个随机的csrf_token令牌,当表单提交时,获取到csrf_token 通过 csrf_token_key解密比较是否一致。

1.csrf_token要随机,而且是要用csrf_token_key来完成这个随机,并保证可以验证和比较
2.为什么csrf_token要随机呢?因为服务器并没有验证这个csrf_token的重复和时效,这是我不太理解的地方,但大多数的网站都是这样做的,很疑惑。

回复
阅读 5.6k
2 个回答
  1. CSRF=攻击者构建一个请求,引诱有某网站权限的人发出,达成目的
  2. 所以,要防止 CSRF,只要让用户身份验证在这种情况下失效即可
  3. 所以,只要满足这些条件就可以

    1. 服务器端会校验 csrf token
    2. csrf token 不能被轻易破解
    3. 二选一:

      1. csrf token 以某种 无法构建 的方式发送给服务器
      2. 攻击者难以取得 csrf token

回到题目,我觉得你描述的做法是加大攻击者取得和重复利用 csrf token 的难度,并非一定要这么做。

宣传栏