什么是同源策略:javascript
在用户浏览互联网中的网页的过程当中,身份和权限的思想是贯穿始终的java
同源策略(Same-Origin Policy),就是为了保证互联网之中,各种资源的安全性而诞生的产物,它其实是一个众多浏览器厂商共同遵照的约定。同源策略是浏览器中基本的安全功能,缺乏同源策略,不少浏览器的常规功能都会受到影响,能够说WEB是构建在同源策略基础之上的。jquery
若是WEB世界没有同源策略,当你登陆FreeBuf帐号并打开另外一个站点时,这个站点上的JavaScript能够跨越读取你的FreeBuf帐号数据,这样整个WEB世界就无隐私可言了。ajax
情景设想:跨域
将一个学校内的学生看做不一样源的个体。虽然一个班级里面有许多学生,可是他们都是互不相关的个体。学生家长请求老师提供同窗们的学习成绩报告,老师会告诉家长,你只可以查看本身孩子的学习成绩报告。浏览器
同理,学校收到请求要对一个学生的学习成绩进行评价,那么在出具评价报告以前,学校须要对请求者的身份进行确认。安全
这就是与浏览器密切相关的同源策略服务器
继续假设,学校容许任何人不通过身份确认查看学生的学习成绩报告,这就和浏览器没有同源策略同样cookie
同源策略机制为现代普遍依赖与cookie维护用户会话的WEB浏览器定义了特殊的功能,严格隔离不相关的网站提供的内容,防止客户端数据机密性或完整性丢失。dom
同源策略的重要性:
浏览器的同源策略,限制了不一样源的“document”或是脚本,对当前“document”或资源及其属性的读写权限。
源,即Origin,同源策略保护了a.com域名下的资源不被来自其余Origin的脚本读取或篡改。
同源策略是一种安全思想,但并非统一的规范体系。
JavaScript中的同源策略:
JavaScript中的同源策略,须要对比二者中的域名/host、端口、协议。三者彻底相同才能够认为是同源的
肯定JS脚本的源,取决于加载该JS文件的位置,而非JS文件存放的位置
<script src="http://lab.b.com/scripts/jquery.js" type=“text/javascript"></script> 可成功加载
在HTML语言中,有部分标签在引用第三方资源时,不受同源策略的限制
例如:<script> <img> <iframe> <link> ......
带src属性的标签,在加载时,实际是生成一条GET请求,向指定服务器申请资源。不一样于XML Http Request,浏览器限制了script对src属性加载的资源内容的读写权限
受同源策略影响
ajax请求须要被请求的页面容许跨域请求才行,iframe,window.open加载的页面要相互操做受到同源策略的影响。
XML Http Request在工做中受到同源策略的限制,不能跨域访问资源,如今能够经过设置HTTP Header:Access-Control-Allow-Origin来实现XML Http Request的跨域访问
在浏览器中,Script、cookie、XML Http Request受到同源策略的限制以外,在浏览器加载的第三方插件出于安全性的考虑,也一样发展处各自的同源控制策略
例如:Flash文件被加载后,若访问某域a.com名下的资源时,会先访问域下面的http://a.com/crossdomain.xml文件,查询是否容许flash所在的域进行访问
crossdomain.xml文件的基本格式以下:
<cross-domain-policy>
<allow-access-from domain="*.secevery.com" />
<allow-access-from domain="*.secevery.cn" />
</cross-domain-policy>
XSS还须要了解:
W3C的世界法则
URL的本质
HTTP协议
HTML
DOM
JavaScript
AJAX
AJAX = 异步 JavaScript 和 XML
AJAX是一种用于建立快速动态网页的技术
经过在后台与服务器进行少许数据交换,AJAX可使网页实现异步更新,这意味着能够在不从新加载整个网页的状况下,对网页的某部分进行更新
例如:新浪微博、Google地图等
cookie
CSS
ActionScript