这样将“有状态验证”改成“无状态验证”有问题吗

@Ta 2021-03-03 3405点击

概述

该网站并非前后端分离项目,通过 Sesssion 判断是否登录,并且比较多 HTML 代码是通过 PHP 控制显示的,也有一些数据是通过 Ajax 请求的。

现在公司要求,即使用户 禁用 Cookie 也需要让用户能正常登录、使用(具体为什么也不好说)

PS:因为页面比较多,暂时也不太现实改成前后端分离的模式

目前想到的解决方法

  1. 用户登录,跳转的 URL 后面再加上如 token 参数,token 由服务器生成长度 32 位,并储存在 Redis 里,TTL 设置为 86400 秒,大概结构就是

    key value
    user:info:服务器生成的Token 序列化后的一些用户数据如用户 ID等数据
  2. 然后计划用 JS 将页面中 a 标签链接,如果包含了项目域名 www.baidu.com,如:https://www.baidu.com/test 的后面追加一个 token 参数(取当前页面地址栏 token 值),就变成了:https://www.baidu.com/test?token=xxxxxxxxxx

  3. 就像之前说的,页面中还有 Ajax 请求的,接口有 CSRF 验证,因为禁用了 Cookie 故请求失败( HTTP 状态码 419 ) 。暂时只想到的就是 Ajax 请求的时候也加上 Token 然后中间件之类的改一下验证


以上的做法不知道有大家有什么看法(比如有无安全方面的问题),或者有更好的建议

先谢谢大家了 : )

回复列表(4|隐藏机器人聊天)
添加新回复
回复需要登录