我对同源政策(SOP)的主题有点困惑。如果我理解正确,SOP 的目的是防止一个页面访问另一个网页上的敏感数据。
例如,为什么我可以简单地从不同的来源获取敏感图像?这将违反 SOP 的想法。
我对同源政策(SOP)的主题有点困惑。如果我理解正确,SOP 的目的是防止一个页面访问另一个网页上的敏感数据。
例如,为什么我可以简单地从不同的来源获取敏感图像?这将违反 SOP 的想法。
该应用无法从 IMG 标签中获取任何敏感数据。例如,如果您尝试使用<canvas>标签读取像素数据,浏览器应该抛出 SOP 异常,除非使用了 CORS。由于图像可以(由人类用户)查看,但不能以编程方式检查(通过 JS 代码),因此图像策略被认为“足够好” 。
我应该指出,可以从远程图像中获取图像尺寸,这可能被认为是敏感信息,特别是在动态图像 url 上,显示不同尺寸的“好/坏”图像,这些图像会根据某些状态而改变。尽管如此,这是非常少量的信息,通常不是隐私问题 - 而且,它很难隐藏,因为图像尺寸通常可以通过它们如何影响页面布局(脚本可以访问)得出。
更改此政策将破坏大量网站,这些网站需要“深度链接”才能显示来自内容交付网络、imgur 等的资产。
同源策略不是一些统一的干净公理:它实际上是一组特定的规则和特殊情况,这些规则和特殊情况已成为现代 Web 的化石。您无法使用正确捕获基本细节的简短描述来定义同源策略:特殊情况在实践中实际上很重要。
cookie 的规则是 JS 的规则,它们甚至没有被完美地定义和独立于浏览器。由于这些僵化的规则,Cookie 在现代 Web 中的保护非常薄弱,这些规则必须在安全 Web 识别的设计中加以考虑:
相反,可以在浏览器存储(连同“cookie jar”)上存储数据(如 localStorage 和 sessionStorage)的现代 Web 技术是严格按来源与确切的域和 URL 方案隔离的。
包含来自另一个站点的图像不必使用具有指定尺寸的对象来完成(与由框架集页面或托管 iframe 的页面指定布局的框架元素不同),因此布局取决于加载的图像;至少一个网页可以验证是否可以加载图像 URL,这有时可以判断用户是否登录了网站。
加载脚本和样式表的规则是特殊的;这是策略中的一个漏洞,对于与其他域交互很有用:从提供服务的域加载的脚本可以设置一些变量来存储计算结果。这种进行远程过程调用的非常肮脏的方式称为“JSONP”。
然后,有用于测量页面无权查看或测量的资源的加载时间的侧通道......
图像标签仅向目标发送 GET 请求并在目标是图像时获取内容。尝试在图像标签中嵌入包含敏感信息的页面,它会发送 GET 请求,但不会返回任何敏感信息。
Javascript 有可能将您发送到一个页面,并返回该页面的内容(使用 ajax 这可以完成)。
这显然是有问题的,因为某些页面将包含一些敏感信息,因此,只有在同一网站中的某些 API 和页面才有可能。