什麼是同源策略: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