登录涉及的安全问题
- 所有数据的传输过程应当保证安全,保证数据不会在传输过程中泄露或劫持
实质是数据传输的安全,防止信息泄露。这对这种情况,目前最好的方法就是使用HTTPS,而不是使用HTTP
- 应当有一种机制来校验请求发起人是否是之前登陆的用户
在web开发中经常遇到的安全问题——跨站请求伪造(CSRF/XSRF)。即攻击者可以利用漏洞在其他网站上发送请求伪造本站的正常请求,这样攻击者可以在用户完全不知情的情况下进行任何操作。这种问题目前的解决方法就是使用token机制,当用户登录后服务端返回一个token,之后的每次请求都要携带这个token,如果在服务端token不匹配则意味着授权失败
- 应当有一种过期机制使用户不能保持永久登录状态
让用户不能永久处于登录状态,否则用户登录一次就能获得永久授权。在实际中,token本身要具备时效性,要有过期机制。至于过期后是返回登录页面重新登录抑或是自动续期或是自动刷新,这就是由祸端决定了,前端只要配合好即可。
session认证
- 当用户访问服务器,服务器在必要的时候,会创建一个session对象,该对象有一个唯一的id,称之为sessionid,创建完毕后,该对象被存储到服务器的内存中
- 服务器程序会自动把sessionid通过客户端请求过来的response对象的set-cookies方法设置到客户端的浏览器.http请求默认会携带所有的cookies,所以以后所有的请求,都会携带一个存有sessionid的cookies
- 服务端可以根据客户端请求是否具有cookies,而且保存了sessinid来判断用户是否登录和区分不同的用户.
4.cookies是存在于客户端的,可以设置过期时间,session是存在于服务器的,也可以设置过期时间
- 服务器程序可以手动清除服务器指定session
注意
- jquery/axios如果是跨域请求,默认不携带cookies
- session是默认过期时间的
- 同一个浏览器,保持同一个session
- session不适合后台分布式部署
- 前台微信小程序.APP没有浏览器和cookies
token认证
- 当用户登录成功,服务器会根据特定的算法,根据用户信息,生成一个唯一的标识,我们称之为token,并且把token返回给客户端
- 客户端之后的每次请求,需要手动实现携带token
- 服务器根据客户端的token,判断是否登录成功,并且可以根据算法验证token是否有效
- token有过期时间,如果接近过期,客户端需要续期,但是客户端没办法清除当前服务器的token
注意
- token是用自己的过期时间来判断退出的,也就是说用户客户端的退出具有延迟性
- token存在于客户端,和session相比较实际上是算力换空间
- 基于token的登录,token是如何生成的,这里token的代表是jwt
token超时刷新机制
- 每次请求时判断token是否超时,若超时,则获取新token
- 每次请求时判断token是否超时,若超时,则跳转到授权页面
登陆及单行菜单加载
posted @
2020-07-22 21:18
lisalisalisa
阅读(
396)
评论()
收藏
举报