浏览器中如何保存REST认证的Token, 防止CSRF攻击?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

浏览器中如何保存REST认证的Token, 防止CSRF攻击?

在浏览器中需要使用Ajax访问REST API, Token保存在cookie或localstorage中是否可行,
会不会被窃取或者CSRF攻击?

如果使用JS读取来添加到请求中, 那么当第一次访问时, 如何带上Token?(根据有无Token判断用户身份来渲染首页).

刚刚接触前端没多久,Web安全方面不是很懂,请知道的朋友帮忙解答一下, 谢谢.
2015年03月29日提问 编辑 评论 邀请回答 更多

展开
收起
a123456678 2016-07-29 11:59:18 4476 0
1 条回答
写回答
取消 提交回答
  • a123456678

    CSRF的是利用了浏览器给域下的请求自动带上保存的cookie,因此服务器端单纯用cookie判断的话确实会有问题。

    常见解决的方案:

    1. 把token放在cookie/ls里,用js读取cookie中的token,放到ajax请求的参数中。服务器端用参数而非cookie读token。
    2. 遵照HTTP规范,更新资源用POST,这样不能完全防范,但能提升CSRF攻击的成本,常见的img标签攻击会失效
    3. 服务器端对请求的refer做判断,过滤跨域的敏感请求

    建议以上几点都采用,能把CSRF攻击的门槛提高到相对比较安全的级别

    2019-07-17 20:01:48
    赞同 展开评论 打赏
问答标签:
相关产品:
问答排行榜
最热
最新
相关电子书
更多
WEB浏览器中即将发生的安全变化
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载