首先解释下Token
Token其实就是访问资源的凭证;
Token——普遍情况下是用户通过用户名和密码登录成功之后,服务器将登录凭证做数字签名,加密之后得到的字符串。
用户登陆成功之后token会被返回给客户端,客户端有以下几种存储方式
1、存储在localStorage中,每次调用接口的时候都把他当成一个字段传个后端;
2、存储在cookie中,让他自动发送,但不能跨域
3、拿到之后存储在localStorage中,每次调用接口的时候放在HTTP请求头的Authorization的字段里;
下面分别说下将token分别存在cookie、localStorage/sessionStorage的优缺点
cookie:
优点:可以制定httponly,来防止被JavaScript读取,也可以制定secure,来保证token只在HTTPS下传输。
缺点:不符合Restful 最佳实践。 容易遭受CSRF攻击(可以在服务器端检查Refer和Origin)
CSRF跨站点请求伪造(Cross-Site Resquest Forgery),跟XSS攻击一样,存在巨大的安全性问题,就是恶意攻击者盗用已经认证的用户信息,以用户信息名义进行一些操作--如购物、发邮件、转账等。因为身份信息经过认证,所以目标网络会认为这些操作是真者的用户操作的。CSR并不能拿到用户信息,他只是盗用了用户凭证来操作。
localStorage/sessionStorage
优点:储存空间大,灵活,可以通过同域JS访问
缺点:容易受到XSS攻击,特别是在大量引入第三方JS库的情况下,一旦JS脚本被盗用,你的网站就可以很容易的被攻击者访问到。localStorage/sessionStorage只是一种储存机制,在传出过程中不会执行任何安全标准
为了防止XSS,一般的处理是避开和编码所有不可信的数据。
但是像使用托管在CDN、以及一些公共的JavaScript库,或者像npm这样的包管理器导入别人的代码到我们的应用程序中的时候等都有可能发生XSS攻击
XSS攻击:Cross-Site Scripting(跨站脚本攻击)简称XSS,是一种代码注入攻击。恶意攻击者通过在目标网站注入script脚本,使之在用户的浏览器上运行。从而盗用用户信息如Cookie、SessionID等
标签:XSS,sessionStorage,用户,Token,localStorage,cookie From: https://www.cnblogs.com/gerrytong/p/17191271.html