XSS前置課程--同源策略

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

相關文章
相關標籤/搜索