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 的难度,并非一定要这么做。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏