手绘10张图,把CSRF跨域攻击、JWT跨域认证说得明明白白的( 六 )


因此如何保证服务器发给客户端(浏览器)的公钥是正确的呢?
答案是通过数字证书来保证 。但是由于这个不是本文的重点,因此我将这块内容放在后面的文章详细解释 。

手绘10张图,把CSRF跨域攻击、JWT跨域认证说得明明白白的

文章插图
 
写在最后最后,我总结一下,本文的要点:
  1. CSRF 攻击的产生,需要cookie 的『助攻』,否则无法完成 。
  2. CRSF 是利用 cookie,而不是盗取 cookie,这点一定要明白 。
  3. 但也并不是使用了 cookie 就会有 CSRF 风险,而应该说是用 cookie 去做鉴权才会有 CSRF 风险,参考 CSRF Token (把 token 存储在 cookie 的情况)和 JWT (把 token 存储在 cookie 的情况) 。
  4. CSRF Token 和 JWT 虽然都可以做到防御 CSRF 攻击,但其实无论是哪个都无法同时做到防御 CSRF 和 XSS 攻击,在阻止了 CSRF 攻击后,需要再通过其他手段来减少 XSS 攻击的可能性 。
  5. JWT 就是一个由服务端按照一定的规则生成的字符串,
  6. JWT 的目的是为了做一个无状态的 session,避免去频繁查询 session,减少了对服务器产生的压力,简化后端架构模型 。它的主要用途是解决跨域认证的问题,而解决 CSRF 跨域攻击只是它的附带功能 。
  7. payload 是经过 base64URL 算法转换而成的字符串,是可逆的,因此尽量不要存放敏感数据,如若非要存放敏感数据,最好与 HTTPS 协议搭配使用,避免数据泄露 。
  8. JWT 的保存位置与方式,没有绝对的方案,具体如何选择要视情况而定 。




推荐阅读