此条目可参照英语维基百科相应条目来扩充。若您熟悉来源语言和主题,请协助参考外语维基百科扩充条目。请勿直接提交机械翻译,也不要翻译不可靠、低品质内容。依版权协议,译文需在编辑摘要注明来源,或于讨论页顶部标记{{Translated page}}标签。

同源策略(英语:Same-origin policy)是指在Web浏览器中,允许某个网页脚本访问另一个网页的数据,但前提是这两个网页必须有相同的URI、主机名和端口号,一旦两个网站满足上述条件,这两个网站就被认定为具有相同来源。此策略可防止某个网页上的恶意脚本通过该页面的文档对象模型访问另一网页上的敏感数据。

同源策略对Web应用程序具有特殊意义,因为Web应用程序广泛依赖于HTTP cookie[1]来维持用户会话,所以必须将不相关网站严格分隔,以防止丢失数据泄露。

值得注意的是同源策略仅适用于脚本,这意味着某网站可以通过相应的HTML标签[2]访问不同来源网站上的图像、CSS和动态加载脚本等资源。而跨站请求伪造就是利用同源策略不适用于HTML标签的缺陷。

相同来源网站举例[编辑]

下表列出哪些URL与URL http://www.example.com/dir/page.html 属于相同来源:

URL

结果

原因

http://www.example.com/dir/page2.html

只有路径不同

http://www.example.com/dir2/other.html

只有路径不同

http://username:password@www.example.com/dir2/other.html

只有路径不同

http://www.example.com:81/dir/other.html

不同端口(若未标明,http:// 默认端口号为80)

https://www.example.com/dir/other.html

不同协议(https和http)

http://en.example.com/dir/other.html

不同域名

http://example.com/dir/other.html

不同域名(需要完全匹配)

http://v2.www.example.com/dir/other.html

不同域名(需要完全匹配)

另见[编辑]

跨来源资源共享

跨网站指令码

跨站请求伪造

污点检验

内容安全策略

参考文献[编辑]

^ IETF [rfc:6265 HTTP State Management Mechanism, Apr, 2011]

^ Kemp, John. Security on the Web. 2011-02-04 [2018-07-24]. (原始内容存档于2020-09-23). The same-origin policy states that a document from one unique origin may only load resources from the origin from which the document was loaded. In particular this applies to XMLHttpRequest calls made from within a document. Images, CSS and dynamically-loaded scripts are not subject to same-origin policy.

外部链接[编辑]

相同来源策略的几种风格的详细比较(页面存档备份,存于互联网档案馆)

A review of deficiencies in same-origin policies and their implication for web security,存档于互联网档案馆(存档日期 February 11, 2007)

样本供应商提供的同源策略规范 (页面存档备份,存于互联网档案馆)

HTML5规范的来源定义 (页面存档备份,存于互联网档案馆)

W3C关于同一原产地政策的文章(页面存档备份,存于互联网档案馆)

RFC 6454 on The Web Origin Concept (页面存档备份,存于互联网档案馆)

博客文章:Cookie相同来源政策 (页面存档备份,存于互联网档案馆)

用于内容安全政策的wordpress.org插件 (页面存档备份,存于互联网档案馆)