扫码关注公众号

前端网络相关之Token机制
03-26
41观看
01

Token是什么?

Token其实就是访问资源对凭证。一般是用户通过用户名和密码登录成功之后,服务器将登录凭证做数字签名,加密之后得到的字符串作为token。

来自:浏览器、网络相关-Token机制
02

Token 放在 cookie、localStorage、sessionStorage中的不同点?

1将Token存储于localStorage或sessionStorageWeb存储(localStorage/sessionStorage)可以通过同一域商Javascript访问。这意味着任何在你的网站上的运行的JavaScript都可以访问Web存储,所以容易受到XSS攻击。尤其是项目中用到了很多第三方JavaScript类库。为了防止XSS,一般的处理是避开和编码所有不可信的数据。但这并不能百分百防止XSS。比如我们使用托管在CDN或者其它一些公共的JavaScript库,还有像npm这样的包管理器导入别人的代码到我们的应用程序中。如果你使用的脚本中有一个被盗用了怎么办?恶意的JavaScript可以嵌入到页面上,并且Web存储被盗用。这些类型的XSS攻击可以得到每个人的Web存储来访问你的网站。这也是为什么许多组织建议不要在Web存储中存储任何有价值或信任任何Web存储中的信息。这包括会话标识符和令牌。作为一种存储机制,Web存储在传输过程中不强制执行任何安全标准。XSS攻击:Cross-SiteScripting(跨站脚本攻击)简称XSS,是一种代码注入攻击。攻击者通过在目标网站注入恶意脚本,使之在用户的浏览器上运行。利用这些恶意脚本,攻击者可以获取用户的敏感信息如Cookie、SessionID等,进而危害数据安全。2将Token存储与cookie优点:可以制定httponly,来防止被JavaScript读取,也可以制定secure,来保证token只在HTTPS下传输。缺点:不符合Restful最佳实践。容易遭受CSRF攻击(可以在服务器端检查Refer和Origin)CSRF:跨站请求伪造,简单的说,是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并运行一些操作(如:发邮件、发信息、甚至财产操作如转账和购买商品)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去运行。这利用了web中用户身份验证的一个漏洞:简单的身份验证职能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出去的。CSRF并不能够拿到用户的任何信息,它只是欺骗用户浏览器,让其以用户的名义进行操作。

来自:浏览器、网络相关-Token机制
03

Token的作用

Token的作用主要是这两点:节省服务器内存数据签名防伪造攻击

来自:浏览器、网络相关-Token机制
04

Token的实现原理及思路

1.实现原理1)将荷载payload,以及Header信息进行Base64加密,形成密文payload密文,header密文。2)将形成的密文用句号链接起来,用服务端秘钥进行HS256加密,生成签名.3)将前面的两个密文后面用句号链接签名形成最终的token返回给服务端说明:(1)用户请求时携带此token(分为三部分,header密文,payload密文,签名)到服务端,服务端解析第一部分(header密文),用Base64解密,可以知道用了什么算法进行签名,此处解析发现是HS256。(2)服务端使用原来的秘钥与密文(header密文+"."+payload密文)同样进行HS256运算,然后用生成的签名与token携带的签名进行对比,若一致说明token合法,不一致说明原文被修改。(3)判断是否过期,客户端通过用Base64解密第二部分(payload密文),可以知道荷载中授权时间,以及有效期。通过这个与当前时间对比发现token是否过期。2.实现思路1.客户登录校验,校验成功后就返回Token给客户端。2.客户端收到数据后保存在客户端3.客户端每次访问API是携带Token到服务器端。4.服务器端采用filter过滤器校验。校验成功则返回请求数据,校验失败则返回错误码

来自:浏览器、网络相关-Token机制
课程
专栏
【校招VIP】Token一般存放在哪里
csdn
Token
存放
【校招VIP】Token的原理及实现
csdn
Token
原理及实现
【校招VIP】前端面试题:Token一般是存放在哪里
Token放在cookie和放在localStorage、sessionStorage中有什么不同
csdn
面试题
Token
js语言和框架-浏览器、网络相关-Token机制
3专栏
1课程
4 试题