同源策略

摘自网络,出处忘了。

同源策略(SOP,Same Origin Policy),两个页面的【协议】【域名】【端口】都相同,则两个页面具有相同的源,任何一个不同都是不同源的。
举例:
假设源是:http://store.company.com/dir/page.html
同源的是:
http://store.company.com/dir2/other.html
http://store.company.com/dir/inner/another.html
不同源的是:
https://store.company.com/secure.html 不同协议 ( https和http )
http://store.company.com:81/dir/etc.html 不同端口 ( 81和80)
http://news.company.com/dir/other.html 不同域名 ( news和store )

同源策略控制内容

同源策略是禁止读取HTTP回复,并不会禁止脚本执行,也不会禁止HTTP请求,因此在防御CSRF上作用是非常有限的,因为CSRF在请求发出的时候就已经达到了攻击的目的。
一般情况下,静态资源通常不受同源策略限制,如有js/css/jpg/png等。

同源策略控制了不同源之间的交互,例如在使用XMLHttpRequest或img标签时则会受到同源策略的约束,这些交互通常分为三类。

下面是可能嵌入跨域资源的示例:
<script src="..."></script> 标签嵌入跨域脚本。语法错误信息只能在同源脚本中捕捉到。
<link rel="stylesheet" href="..."> 标签嵌入CSS。由于CSS的松散的语法规则,CSS的跨域需要一个设置正确的Content-Type 消息头。不同浏览器有不同的限制: IE, Firefox, Chrome, Safari (跳至CVE-2010-0051)部分 和 Opera。
<img>嵌入图片。支持的图片格式包括PNG,JPEG,GIF,BMP,SVG,...
<video> 和 <audio>嵌入多媒体资源。
<object>, <embed> 和 <applet> 的插件。
@font-face 引入的字体。一些浏览器允许跨域字体( cross-origin fonts),一些需要同源字体(same-origin fonts)。
<frame> 和 <iframe> 载入的任何资源。站点可以使用X-Frame-Options消息头来阻止这种形式的跨域交互。

2018/12/13 16:21 下午 posted in  xss跨站脚本