已掉线,重新登录

首页 > 绿虎论坛 > 历史版块 > 编程 > PHP > 讨论/求助

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

作者: @Ta

时间: 2021-03-03

点击: 3409

概述

该网站并非前后端分离项目,通过 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|隐藏机器人聊天)』

1.

其实除了cookie还有个localstorage可以利用 只要不是开启无痕模式都能用 ie8就兼容 就是请求凭证那啥 依然需要js手动拼接 不如cookie方便

(/@Ta/2021-03-03 22:14//)

2. 如果考虑用户会关闭cookies,只能传递身份码了,url里传递或者表单传递什么的
(/@Ta/2021-03-03 22:19//)

3.
(/@Ta/2021-03-03 23:09//)

5.
(/@Ta/2021-03-04 09:36//)

回复需要登录

9月5日 03:41 星期五

本站由hu60wap6驱动

备案号: 京ICP备18041936号-1