Web 技术研究所

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

击穿根域 Cookie 的安全问题

  今天要把一个子域开放出去,突然想到一个坑爹的问题。注意这里的「坑爹」确实是坑爹!如果子域名跑的是第三方的程序,那么在这个子域名下就可以被访问到爹域上的 Cookie。当然我们可以不在它爹上放有价值的 Cookie 来试着避免问题,然而这样真的有用么?
  我以前一直觉得,两个子域名只要不基于父域名的 Cookie 共享数据,它们就是完全隔离的。然而事实并没这么简单,把子域名开给第三方程序也是非常危险的。虽然每个子域名之间的 Cookie 是隔离的,但只要有共同的爹它们就是有关联的。
  我们知道 Cookie 的数量和大小是有上限的(每个浏览器的限制不同),如果一个子域名下的程序疯狂地往根域上写 Cookie 会怎么样?死命坑长辈了!这些 Cookie 就会被共享到其它子域名上,并且把其它子域名原有的关键 Cookie 给排挤掉。也就是说,即便是两个子域名,Cookie 隔离机制也可能被坑爹的子域名击穿,导致原有的 Cookie 失效,用户丢失登陆状态。比如下面这个代码在百度的任何一个子域上运行都会导致百度账号被退出:
for (var i = 0; i<1E3; i++) document.cookie = i + '=' + i + '; Domain=baidu.com; Path=/';   其实规范应该定义子域名下的 Cookie 优先于父域名,这样就可以避免这些问题。然而我并没有看到这样的规范,也没有看到浏览器有这样的实现,所以就目前的状态,把子域名开放给第三方程序就得对第三方程序充分信任。
网名:
3.80.55.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^