小弟我最近看了 jwt 的使用,在自己写的小项目里也用了 jwt 作为单点登录验证等,后端是 nodejs。我想到了 csrf,csrf 和 jwt 的原理我也知道的差不多了,但是我的疑惑是采用 JWT 的形式可以防止 CSRF 吗? 我现在用 postman 去请求我的接口,如果 postman 的 header 里面不放我的 token(这个 token 是我现在开发的页面正常登陆上去后端返回到前端的 token) 的话确实显示的是 token 不存在不返回数据。 但我在浏览器的 localStorage 里面把我存的 token 拷出来放在 postman header 里面去请求,就成功了。那岂不是 jwt 防不了 CSRF 吗,存在前端的 token 谁都可以拿呀,拿了之后带着请求岂不是就ok 了?
这个问题真的很困扰我,请各位大哥不吝赐教~
你是不是对CSRF和JWT有什么误解。
JWT只是一个身份验证的凭证,和你用去防范CSRF并不矛盾,你完全可以在JWT之上加上防范CSRF的措施,比如检查Referer字段和添加校验token(即CSRF Token)。
检查Referer字段
添加校验token