子域cookie,发送在父域请求中?

12

子域名的Cookie会在父域名的HTTP请求中发送吗?

例如,假设我有以下Cookie:

Name     Value     Domain (not https)
ABC      1         .example.com
XYZ      0         foo.example.com
DEF      0         bar.example.com

如果发送到 http://example.com/content 或者 http://QQQ.example.com/content,那么 XYZ@foo.example.com 和 DEF@bar.example.com 会被一起发送到 HTTP 头中的 cookies 字段吗?


参见:相关域名Cookie攻击 - makerofthings7
3个回答

25

在域值 .example.com 中的前导点表示example.com及其子域名。如果没有前导点,则cookie仅对此特定域名有效。

请注意,在设置cookie时,没有前导点的域值将以点(.)开头。仅当未设置domain参数时,用户代理程序才会假定该cookie适用于当前域。

因此,在这种情况下,如果请求 http://example.com/,则只会发送.example.com的cookie。但是在 http://foo.example.com/ 的情况下,将同时发送.example.comfoo.example.com的cookie。而在 http://bla.foo.example.com 的情况下,仅会发送.example.com的cookie。


1
不幸的是,每个主要浏览器对这种技术的支持方式都不同,因此我不建议使用它。 - Efran Cobisi
@EfranCobisi 你所说的“这个技术”是什么意思? - Gumbo
3
很遗憾,对于cookie的RFC文件,针对domain属性给出了不同的说明。RFC 2109: "一个明确指定的域名必须始终以点号开头。","[...] 用户代理拒绝接受cookie(不应存储其信息)如果[...] Domain属性的值[...]不以点号开头。";相反,RFC 6265则指出" [...] 如果前导%x2E(“。”)存在,则将被忽略[...]"。 - Gumbo
啊,这就解释了一切。我怀疑它可能与RFC有关...感谢你指出了这个问题。 - Efran Cobisi
什么构成子域?一个具有相似域名的虚拟主机(VHost)或使用mod_rewrite将子域映射到不同目录? - puk
显示剩余3条评论

6
不,实际上是相反的:在子域名的HTTP请求中发送父域名cookie。

有没有办法防止父域Cookies在子域HTTP请求中发送? - Prachi
1
@Prachi:不是跨浏览器的。原则上,如果你根本没有设置domain,它们就不应该继承到子域中。但IE不尊重这一点。 - bobince

-1

子域名的Cookie只有在上一级域名设置了一个带有前导点的域名时才会被发送。因此,如果www.example.com使用域名“.example.com”设置了一个Cookie,则它将被发送,否则不会。

反过来更令人困惑,顶级域名设置的Cookie应该只在具有前导点的情况下发送到子域名,但如果您使用的是Internet Explorer,则还会在没有前导点的情况下发送它(ref)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接