登入思考

一、传统的登入方式

     浏览器输入用户名密码,服务端校验通过,根据用户信息生成一个token,将token和user_id存到数据库或者session中,并将token返回给前端,存入cookie,后面浏览器每次请求都会带上cookie,服务端根据cookie查询用户,验证用户有效性。

     弊端:

     1)如果出现XSS(跨站脚本攻击)漏洞,由于cookie可以被js读取,XSS漏洞会导致用户token被泄露。

         解决方案:

         a)设置httpOnly,这样的话cookie将不会被js读取,浏览器会自动将它加到请求头信息中,但是带来了新的问题,很容易被XSRF(跨站请求伪造)攻击,因为只要当前浏览器开着,另一个界面可以很容易的跨站请求这个界面的内容,因为cookie会被默认发送出去。

         b)设置secure,这样cookie就只能通过https传输,可以过滤掉一些使用http协议请求的XSS注入。

     2)将验证信息存到数据库中,每次验证的时候,都需要去数据库中查询,增加了数据库的查询和存储开销。

     3)如果将token存到session中,也会增加服务器的存储压力。

二、使用token登入的方式

    需要有一个进行缓存token+redis的方式来实现共享session

三、使用jwt登入的方式

    不需要进行缓存jwt,但是jwt实现强制登出问题实现困难,还是要借token机制

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值