我在这里登录时正在听 Pandora,下一个广告是关于 InfoSec 的。这让我想知道这是否是巧合(可能)或者他们是否知道。长话短说,我想知道一个网页是否可以访问它没有放在那里的 cookie(从而获得相当准确的浏览历史以及有关用户的信息)。在我看来,这应该(并且可能是)防御,但如果是,如何?我可以在我的电脑上读取cookies,至少可以看到它们来自哪里,所以它们似乎没有被加密......
一个网页可以读取另一个页面的 cookie 吗?
这是为了防止使用同源策略,这通常会阻止一个站点读取另一个站点的 cookie。
当您看到广告似乎知道您去过哪里的行为时,很可能是由于 3rd 方广告跟踪 cookie。
因此,作为一个简化的示例,如果您访问使用广告网络的站点 A,该广告网络可以通过在您的 PC 上放置跟踪 cookie 来记录您在该站点上。
然后,当您转到使用相同广告网络的站点 B 时,广告网络会读取您在站点 A 上时设置的 cookie(它可以这样做,因为它在两种情况下都从其域中加载内容,所以它不会打破同源),然后可以根据您的浏览习惯为您提供广告。
一个设计合理的浏览器不会允许一个网站访问另一个网站的 cookie,因为这会违反跨域策略并且是一个主要的安全问题。
不相关的网站可以实施将信息发送到单个广告跟踪网络的脚本,然后该网络可以根据您报告的活动向这些参与网站提供定制的广告。
打开“不跟踪”选项并不是 100% 可靠的,因为“不跟踪”只有在收到“不跟踪”请求的网站主动接受时才能工作。Cookie 可以被禁用或阻止,但广告网络还有其他简单的方法可以跟踪您的活动:
- 不相关站点上的页面可以显示驻留在广告网络服务器上的图像文件。当您的浏览器请求图像文件时,它会将您的 IP 地址和推荐 URL(显示图像的页面)发送到广告网络服务器。可以使用信息参数(由页面服务器生成)来增强图像 URL。幸运的是,广告拦截器可以阻止这样的图像。
- 当您的浏览器请求网页时,页面服务器可以直接与广告网络通信并共享您的 IP 地址和您请求的内容等信息。您无法阻止这种形式的跟踪,但可以通过使用 VPN 来缓解这种情况。
这里可能有一个定时侧信道。假设如果用户登录,他会得到一大堆信息,但如果他退出,他会得到一个小的登录表单。互联网通道的吞吐量是有限的,因此用户下载同一页面的次数可能会因内容而异。JS 允许测量加载元素所需的时间,因此可以确定用户是否在某些外国不合作的网站上登录。我没有测试过这个想法,甚至没有用谷歌搜索过,但我知道去年在一些会议上对 hsts 的攻击使用了定时侧信道。
你写了:
我想知道一个网页是否可以访问它没有放在那里的 cookie(从而获得相当准确的浏览历史以及有关用户的信息)。在我看来,这应该(并且可能是)防御,但如果是,如何?我可以在我的电脑上读取cookies,至少可以看到它们来自哪里,所以它们似乎没有被加密......
您是对的,是的,您可以读取 cookie 的内容,因为它是您的计算机。但这并不意味着浏览器会让任何网站阅读它们。所以,这是两个不同的东西。您的计算机上可能还有一些您可以阅读但网站不能阅读的个人文件。
你有一个有趣的问题。到目前为止,我假设每个网页都有自己的 cookie。但事实证明这是错误的。事实上,每个域都有自己的 cookie。至少 Firefox 似乎是这样工作的。因此,如果您的网站上有三个页面,它们可以访问彼此的 cookie。
您无法从 cookie 中准确地看到一个人的浏览历史记录。Cookie 通常存储域、到期日期、设置、计数器以及用户可能在表单中输入的任何内容。所以,这些是你可以从 cookie 中找到的东西。最糟糕的情况是假设您在一页上输入您的信用卡号。JavaScript 将号码保存在 cookie 中 (CARDNO=1234567890123456) 并将您转移到同一域上的另一个页面。然后该页面读取数字并对其进行验证并将您发送到第三页,然后将数据提交给服务器。听起来很疯狂,但这是可能的。查看 cookie,您不会知道用户访问了所有三个页面。您所知道的只是 cookie 中保存的内容、到期日期和来源。在这种情况下,如果信用卡号保存在 cookie 中,那么这就是cookie中的内容。它可能是加密的或未加密的,是的。来自其他域的网页应该无法读取 cookie,因为正如您所见,这将是一个大问题。现在,由于您是计算机的所有者,您可以访问计算机上的任何内容,因此您可以查看保存在计算机上的所有 cookie。只要您是唯一使用计算机的人,这不是安全问题。如果您的计算机被盗,或者您与某人共用一台计算机,如果您拥有管理员帐户,您仍然可以阅读其他人的文档和 cookie 等内容。由于您是计算机的所有者,因此您可以访问计算机上的任何内容,因此您可以根据需要查看保存在计算机上的所有 cookie。只要您是唯一使用计算机的人,这不是安全问题。如果您的计算机被盗,或者您与某人共用一台计算机,如果您拥有管理员帐户,您仍然可以阅读其他人的文档和 cookie 等内容。由于您是计算机的所有者,因此您可以访问计算机上的任何内容,因此您可以根据需要查看保存在计算机上的所有 cookie。只要您是唯一使用计算机的人,这不是安全问题。如果您的计算机被盗,或者您与某人共用一台计算机,如果您拥有管理员帐户,您仍然可以阅读其他人的文档和 cookie 等内容。
Cookie 为每个域提供大约 5KB 的空间来保存数据。它可能多一点或少一点。如果一个网站需要保存更多的数据,那么有一个叫做 localStorage 的新东西。它的工作方式与 cookie 相同,但它允许网站保存数兆字节的数据,而不仅仅是几千字节。同样,与 cookie 一样,localStorage 中的值在同一域内的网页之间共享。因此,如果一个页面设置了一个值,那么另一个页面可以在 SAME 域中读取该值。
另请参阅: https ://html.spec.whatwg.org/multipage/webstorage.html#dom-localstorage