Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

没有 Cookie 如何安全地保存登录状态?

  Cookie 可以设置为 HTTP Only,所以用它来存储登录状态是非常安全的。但是在无法使用 Cookie 的时候要怎么办?今天突然纠结到这个问题,想了好久终于得到了个略(shí)微(fēn)靠(dàn)谱(téng)的方法。使用 HTTP 缓存来实现登录状态存储。
  是不是乍一听感觉很神奇?其实对前端而言,安全的东西并不多。除了 HTTP Only 这个限制外,我能立即想到的另一个限制就是同源策略了。或者说,我们可以在页面引入一个第三方的 js 文件并执行,但碍于同源策略,我们无法得知里面到底是什么代码。
  我的想法是,在用户登录成功后服务器随机生成一个可执行的 js,并根据登录时设置「记住密码」的时间来设置这个缓存。这个 js 文件中包含了一个随机生成的 Token 和对 API 服务器调用的封装。只要通过这个 js 文档封装的对象去调用 API 就会自动带上 Token,服务器通过这个 Token 验证身份。
  无论哪个客户端,这个 js 文件的 URL 都是一样的,里面的内容只在登录时生成,并长期缓存。另外这个 js 文件应该独立于站点域名,这样才能通过同源策略来保护 Token。其实绕了一大圈,我只是把原来 HTTP Only 的 Cookie 丢到了 HTTP Cache 中了。
  这个想法只是我今晚打瞌睡的时候想到的,还有好多细节没考虑清楚,但这个思路确实达到了 HTTP Only 的安全级别,且消除了对 Cookie 的依赖。
网名:
3.80.55.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^