该网站并非前后端分离项目,通过 Sesssion 判断是否登录,并且比较多 HTML 代码是通过 PHP 控制显示的,也有一些数据是通过 Ajax 请求的。
现在公司要求,即使用户 禁用 Cookie 也需要让用户能正常登录、使用(具体为什么也不好说)
PS:因为页面比较多,暂时也不太现实改成前后端分离的模式
用户登录,跳转的 URL 后面再加上如 token
参数,token
由服务器生成长度 32 位,并储存在 Redis 里,TTL 设置为 86400 秒,大概结构就是
key | value |
---|---|
user:info:服务器生成的 Token |
序列化后的一些用户数据如用户 ID等数据 |
然后计划用 JS 将页面中 a
标签链接,如果包含了项目域名 www.baidu.com,如:https://www.baidu.com/test
的后面追加一个 token
参数(取当前页面地址栏 token 值),就变成了:https://www.baidu.com/test?token=xxxxxxxxxx
就像之前说的,页面中还有 Ajax 请求的,接口有 CSRF
验证,因为禁用了 Cookie 故请求失败( HTTP 状态码 419 ) 。暂时只想到的就是 Ajax 请求的时候也加上 Token 然后中间件之类的改一下验证
以上的做法不知道有大家有什么看法(比如有无安全方面的问题),或者有更好的建议
先谢谢大家了 : )
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.