Ok Soo我有3个站点。所有人都需要存储每个站点都需要能够看到的cookie。 我有一个单一的ASPX,可以存储所有3个站点的cookie。 基本上在网站上的每个页面上都有一个调用ASPX并使其存储cookie的javascript。如果ASPX在一个域上并且我将aspx加载为图像,为什么每个站点都不写入相同的cookie?基本上让我这样打破它。
X.com y.com z.com 一切都存在
y.com/cookiesave.aspx也存在。它写了一个名为bob的coookie并将其设置为Guid,如果它不存在......
所有页面上的x.com,y.com和z.com基本上都有一个javascript,可以从y.com/cookiesave.aspx加载图像,返回1x1透明图像。 但它似乎没有看到这些cookie来自y.com 它仍然将所有三个站点分别保存和加载cookie。怎么知道脚本是否只在y.com上?答案 0 :(得分:3)
阻止这种情况的保护由浏览器制造商实施,以防止跨站点脚本攻击。如果你有一个合法的目标,那么以这种方式实现它;使用x.my.com
,y.my.com
和z.my.com
并为my.com
设置Cookie,而不是为每个Cookie设置。
另请注意:对此类操作的保护不仅仅是由浏览器停止,还有安全网关,防火墙等寻找此行为,因为它被认为是攻击。除非你按照我的建议进行攻击。哦,不要进行攻击 - 如果你正在考虑这样做的话。
答案 1 :(得分:1)
Cookie必须具有相同的原始域。对于任何cookie,有两个关键值 cookie domain 和 cookie path 。 Cookie域默认设置为加载页面的域。例如www.foo.com
。如果您想在域之间共享cookie,这些域必须是:
a.foo.com
b.foo.com
c.foo.com
在这种情况下, Cookie域必须设置为foo.com
(您无法设置com
)。
cookie路径是服务器上应该返回cookie的路径。大多数情况下,您将其设置为/
,这意味着任何路径都将获取cookie。但您可以将其设置为/something
,然后任何类似/something/here/
的网页都会获得Cookie。
修改:
大多数浏览器会阻止来自任何第三方的Cookie,而不是您正在访问的网页。