是否可以将domain.ext,sub1.domain.ext和sub2.domain.ext的cookie彼此隔离?

时间:2010-11-01 23:46:31

标签: javascript cookies

我正在开发一个从domain.ext提供的Web应用程序。此Web应用程序使用基于cookie的会话,并为用户提供在子域上托管包含自定义JavaScript的网页的功能,例如。 sub1.domain.ext,sub2.domain.ext。子域不使用cookie支持的会话。

鉴于此设置,是否可以确保以下内容?:

  1. sub1.domain.ext的用户无法读取或写入domain.ext的cookie(即,不能通过嵌入在sub1.domain.ext页面中的JavaScript来窃取或劫持domain.ext会话。)
  2. 在sub1.domain.ext页面中嵌入的JavaScript无法在sub2.domain.ext读取或写入cookie,反之亦然。
  3. 我已经测试了一些内容,例如,似乎可以通过在sub1.domain.ext窗口中运行document.domain = 'domain.ext'来与sub1.domain.ext中的domain.ext的cookie进行交互。有没有办法防止这种情况,例如在从domain.ext设置域时指定某种策略?

1 个答案:

答案 0 :(得分:3)

您无法通过设置example.com参数来指定Cookie仅对domain有效。如果您设置domain=example.com,它将对*.example.com生效。

example.com 上设置Cookie而不使用 domain参数在大多数浏览器中仅为example.com设置Cookie。但不是IE。

因此,如果您希望子域名具有单独的Cookie上下文,则应仅从www.example.com 为您的网站提供服务。正如Gaby所说,当然,您仍然可以通过example.com版本提供301重定向来支持www访问。