Token一般存放在哪里
Token一般是存放在哪里? Token放在cookie和放在localStorage、sessionStorage中有什么不同?
- oken是什么?
- Token 存放位置
- Token 放在 cookie、localStorage、sessionStorage中对不同点?
- 总结
一、Token是什么?
Token 其实就是访问资源对凭证。一般是用户通过用户名和密码登录成功之后,服务器将登录凭证做数字签名,加密之后得到的字符串作为token。
二、Token存放位置
Token 其实就是访问资源对凭证。一般是用户通过用户名和密码登录成功之后,服务器将登录凭证做数字签名,加密之后得到的字符串作为token。
它在用户登录成功之后会返回给客户端,客户端主要以下几种存储方式:
1、存储在localStorage中,每次调用接口的时候都把它当成一个字段传给后台
2、存储在cookie中,让它自动发送,不过缺点就是不能跨域
3、拿到之后存储在localStorage中,每次调用接口的时候放在HTTP请求头的Authorization字段里面。token 在客户端一般存放于localStorage、cookie、或sessionStorage中。
三、Token 放在 cookie、localStorage、sessionStorage中的不同点?
3.1 将Token存储于localStorage或 sessionStorage
Web存储(localStorage/sessionStorage)可以通过同一域商Javascript访问。这意味着任何在你的网站上的运行的JavaScript都可以访问Web存储,所以容易受到XSS攻击。尤其是项目中用到了很多第三方JavaScript类库。
为了防止XSS,一般的处理是避开和编码所有不可信的数据。但这并不能百分百防止XSS。比如我们使用托管在CDN或者其它一些公共的JavaScript库,还有像npm这样的包管理器导入别人的代码到我们的应用程序中。
如果你使用的脚本中有一个被盗用了怎么办?恶意的JavaScript可以嵌入到页面上,并且Web存储被盗用。这些类型的XSS攻击可以得到每个人的Web存储来访问你的网站。
这也是为什么许多组织建议不要在Web存储中存储任何有价值或信任任何Web存储中的信息。 这包括会话标识符和令牌。作为一种存储机制,Web存储在传输过程中不强制执行任何安全标准。
XSS攻击:Cross-Site Scripting(跨站脚本攻击)简称XSS,是一种代码注入攻击。攻击者通过在目标网站注入恶意脚本,使之在用户的浏览器上运行。利用这些恶意脚本,攻击者可以获取用户的敏感信息如Cookie、SessionID等,进而危害数据安全。
3.2 将Token存储与cookie
优点:可以制定httponly,来防止被JavaScript读取,也可以制定secure,来保证token只在HTTPS下传输。
缺点:不符合Restful 最佳实践。 容易遭受CSRF攻击(可以在服务器端检查Refer和Origin)
CSRF:跨站请求伪造,简单的说,是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并运行一些操作(如:发邮件、发信息、甚至财产操作如转账和购买商品)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去运行。这利用了web中用户身份验证的一个漏洞:简单的身份验证职能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出去的。CSRF并不能够拿到用户的任何信息,它只是欺骗用户浏览器,让其以用户的名义进行操作。
总结
关于token 存在cookie还是localStorage有两个观点:
支持Cookie的开发人员会强烈建议不要将敏感信息(例如JWT)存储在localStorage中,因为它对于XSS毫无抵抗力。
支持localStorage的一派则认为:撇开localStorage的各种优点不谈,如果做好适当的XSS防护,收益是远大于风险的。
放在cookie中看似看全,看似“解决”(因为仍然存在XSS的问题)一个问题,却引入了另一个问题(CSRF)
localStorage具有更灵活,更大空间,天然免疫 CSRF的特征。Cookie空间有限,而JWT一半都占用较多字节,而且有时你不止需要存储一个JWT。
Token一般存放在哪里相关推荐
- token为什么要存放在本地存储和vuex两个地方
背景:token是用来做访问权限控制的(没有token,不能去那些需要token才能访问的页面),调用哪些需要授权的api接口,多个地方都要使用,所以要找个地方统一存放 token直接存放在本地存储, ...
- JWT token信息保存
1.先来讲述一下token保存在浏览器端的几种不同的方式 (1)可以选择在cookie中进行保存,在服务端的代码为 String token = Jwt.createToken(payload); ...
- SpringBoot集成JWT实现Token登录验证
目录 1.1 JWT是什么? 1.2 JWT主要使用场景 1.3 JWT请求流程 1.4 JWT结构 二,SpringBoot集成JWT具体实现过程 2.1添加相关依赖 2.2自定义跳出拦截器的注解 ...
- php jwt token刷新方案,JWT刷新token策略
springcloud的项目用JWT做身份验证,对于token过期时间的刷新策略整理如下图: 刷新策略 在登录接口中返回两个token,一个是用来请求业务接口验证身份信息的accessToken,一个 ...
- Getway jwt 单点登录以及刷新token时间
Getway jwt 单点登录以及刷新token时间 不用nosql或其他 1.集成jwt pom依赖: <dependency><groupId>io.jsonwebtoke ...
- 详解token已过期含义及解决方 token过期是否需要重新登录
详解token已过期含义及解决方 token过期是否需要重新登录Web应用和用户的身份验证息息相关,从单一服务器架构到分布式服务架构再到微服务架构,用户安全认证和授权的机制也一直在演进,下文对各个架构 ...
- hdfs delegation token 过期问题分析
什么是delegation token delegation token其实就是hadoop里一种轻量级认证方法,作为kerberos认证的一种补充.理论上只使用kerberos来认证是足够了,为什么 ...
- Cookie + Session登录-Token登录-SSO 单点登录-OAuth 第三方登录
文章目录 1.Cookie + Session 登录 2. Cookie + Session 存在的问题 3.Token 登录认证 1. Token 机制实现流程 2. Token 机制的特点 3. ...
- 【FastAPI后台API 八】JWT token认证登陆
JWT token认证登陆 前一篇博客讲述了获取和验证请求参数, 这一篇就实践下,演示一个最基础的JWT认证,我公司是用了两个token方式验证,一个请求token,一个刷新token,请求token ...
最新文章
- 汉字转换成全拼的拼音
- 笔记-项目范围管理-需求工程-需求管理
- php dimage加上域名,PHP全功能无变形图片裁剪操作类与用法示例
- internetreadfile读取数据长度为0_【完结】TensorFlow2.0 快速上手手册
- 【渝粤教育】21秋期末考试建设工程法规10221k1
- 用java创建UDF,并用于Hive
- MDOP套装之app-v安装使用及功能说明
- android 音频控件,android AudioManager音频控件
- loadrunner录制脚本参数化之间的关联设置
- python计算圆周率近似值_python计算圆周率pi的方法
- 基础02Random类、ArrayList类
- 第三方魔兽金币交易平台的影响力会很快地褪去
- 传智播客 import导入模块 学习笔记
- 宽度学习与深度学习中的时空转化问题
- Mybatis狂神说完整笔记
- 黑马瑞吉外卖之移动端验证码登录使用qq邮箱
- 多模态,感知,认知,推理
- Java 8 Stream 的终极技巧——Collectors 操作
- Android运行项目时提示:No signature of method: build_*.android() is applicable for argument types
- goodbye 2016 A New Year and Hurry