存储Cookie

时间:2010-11-29 18:37:30

标签: javascript .net asp.net cookies

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上?

2 个答案:

答案 0 :(得分:3)

阻止这种情况的保护由浏览器制造商实施,以防止跨站点脚本攻击。如果你有一个合法的目标,那么以这种方式实现它;使用x.my.comy.my.comz.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,而不是您正在访问的网页。

Cookie blocking