同基因政策(SOP)
在本节中,我们说明了同一原始政策(SOP)是什么以及如何实施。
什么是相同的原始政策?
相同的原始策略是一种Web浏览器安全机制,旨在防止网站相beplay体育能用吗互攻击。
相同的原始策略将脚本限制在一个原点上,从另一个来源访问数据。原点由URI方案,域和端口号组成。例如,考虑以下URL:
http://normal-beplay体育能用吗website.com/example/example.html
这使用该方案http
,域normal-beplay体育能用吗website.com
和端口号80
。下表显示,如果上述URL在上述内容上尝试访问其他原始原则,则如何应用相同的原始策略:
URL访问 | 允许访问? |
---|---|
http://normal-beplay体育能用吗website.com/example/ |
是:相同的方案,域和端口 |
http://normal-beplay体育能用吗website.com/example2/ |
是:相同的方案,域和端口 |
https://normal-beplay体育能用吗website.com/example/ |
否:不同的方案和端口 |
http://en.normal-beplay体育能用吗website.com/example/ |
否:不同的域 |
http://www.normal-beplay体育能用吗website.com/example/ |
否:不同的域 |
http://normal-beplay体育能用吗website.com:8080/example/ |
否:不同的端口* |
*Internet Explorer将允许此访问权限,因为IE在应用相同原始策略时不会考虑端口号。
为什么需要相同的原始政策?
当浏览器将HTTP请求从一个原点发送到另一个来源时,任何与其他域相关的cookie(包括身份验证会话cookie)也将作为请求的一部分发送。这意味着响应将在用户的会话中生成,并包含特定于用户的任何相关数据。没有相同的原始政策,如果您访问了一个恶意网站,它将能够从Gmail,Facebook等的私人消息中阅读您的电子邮件。beplay体育能用吗
如何实施相同的原始政策?
相同的原始策略通常控制JavaScript代码对已加载交叉域的内容的访问。通常允许对页面资源进行交叉原始加载。例如,SOP允许通过标签,媒体通过
标签和JavaScript包括
标签。但是,尽管这些外部资源可以由页面加载,但页面上的任何JavaScript都无法读取这些资源的内容。
同一原始政策有各种例外:
- 有些物体是可写的,但不可读的跨域,例如
地点
对象或location.href
来自iframes或新窗口的属性。 - 有些物体是可读的,但不可写的跨域,例如
长度
属性窗户
对象(该对象存储在页面上使用的帧数)和关闭
财产。 - 这
代替
功能通常可以称为跨域地点
目的。 - 您可以调用某些功能交叉域。例如,您可以调用功能
关
,,,,模糊
和重点
在新窗口上。这邮政
还可以在IFRAME和新窗口上调用函数,以将消息从一个域发送到另一个域。
由于遗产要求,在处理cookie时,相同的原始政策更加放松,因此即使每个子域在技术上都是不同的起源,也通常可以从网站的所有子域中访问它们。您可以使用httponly
cookie旗。
可以使用document.domain
。此特殊属性使您可以放松特定域的SOP,但前提是它是FQDN(完全合格的域名)的一部分。例如,您可能有一个域Marketing.example.com
您想阅读该域的内容example.com
。为此,两个域都需要设置document.domain
至example.com
。然后,尽管它们的起源不同,但SOP将允许在两个域之间访问。过去可以设置document.domain
像这样的tldcom
,这允许在同一TLD上的任何域之间访问,但是现在现代浏览器阻止了这一点。