同源策略

同源策略限制了從不同源加載的文檔或腳本之間的交互。是用于隔離潛在惡意文件的重要安全機制。

同源定義

影響源的因素: 域名(Host)、端口(Port)、協(xié)議(Protocol)

相對http://example.flexiblecat.com/dir/index.html同源檢測的示例:
(默認端口為80)

URL 結(jié)果 原因
http://example.flexiblecat.com/dir/fine.html 成功
http://other.flexiblecat.com/dir/index.html 失敗 不同域名
http://example.flexiblecat.com/dir/nice.html:81 失敗 端口不同
https://example.flexiblecat.com/dir/cross.html 失敗 協(xié)議不同

誰受約束?

DOM、Cookie、第三方插件以及XMLHttpRequest都受到同源策略的約束。

Cookie

只有同源的網(wǎng)頁才能共享,但是若兩個頁面一級域名相同,只是二級域名不同,那么瀏覽器可以通過設置document.domain來共享Cookie。

這是網(wǎng)頁A:http://a.flexiblecat.com/index.tml
這是網(wǎng)頁B:http://b.flexiblecat.com/index.tml
只要把他們的document.domain設置成相同的,例如:document.domain='flexiblecat.com',這兩個網(wǎng)頁就可一共享Cookie啦~

不過這種方法只適用于Cookie和iframe窗口

XMLHttpRequest

它受到同源策略的約束,不能跨域訪問資源,但是W3C委員會制定了XMLHttpRequest跨域訪問標準。
通過目標返回的HTTP頭來授權(quán),是否允許跨域訪問。實現(xiàn)這一點的安全基礎(chǔ)是JavaScript無法控制HTTP頭。

第三方插件

常見的有Flash、Google Gears等。第三方插件的同源策略是它們自己的,不是瀏覽器原生同源策略,若有漏洞,可能會被利用,產(chǎn)生XSS等攻擊
同源策略并不是牢不可摧的,也可能被繞過,典型的有IE 8的CSS跨域漏洞。
這一個漏洞是利用@import加載企圖被讀取內(nèi)容的頁面A為CSS文件,渲染進入當前頁面的DOM,然后通過document.body.currentStyle.frontFamily來訪問頁面A的內(nèi)容。具體內(nèi)容,感興趣的話可以自行百度一下,也很好找。

要看一個網(wǎng)站的策略文件,一般都是URL后面加上/crossdomain.xml

誰不受限制?

一個頁面編寫過程中會用到很多很多的標簽,勤勤懇懇認真堅守崗位的小螺絲釘們。但是可別小看他們,有的小螺絲釘可是不受同源策略的限制的哦~
例如:<script><img>、<link>、<iframe>等帶src屬性的標簽;

為什么它們可以被允許跨域嵌入?

  • 首先,網(wǎng)站的JS腳本、圖片、音頻等資源不一定是放在存儲網(wǎng)站頁面的服務器上的,可能會通過別的方式將資源傳送到瀏覽器中;
  • 其次,網(wǎng)站的編寫人員正常情況下并不會故意加載惡意腳本到網(wǎng)站中,所以,我們默認正常網(wǎng)頁的腳本是安全的;
  • 最后,對于當前頁面來說,頁面內(nèi)加載的JS文件本身放在哪里并不重要,只要它被誰加載了,就和誰同源。例如:
    a.js這個JS文件,原本在x.com頁面中,后來它被y.com這個頁面加載了,這個時候,a.js就和y.com這個頁面同源,而不是x.com。

跨域漏洞圍觀:
UC瀏覽器跨本地域XSS可盜取任意域Cookie https://www.secpulse.com/archives/16840.html
JSONP和CORS跨站跨域讀取資源的漏洞利用 https://www.anquanke.com/post/id/152339


寫在最后,這一塊內(nèi)容必須得了解一下,這是瀏覽器安全很重要的內(nèi)容,沒有它,你還敢用瀏覽器嘛!你的Cookie能被人隨意取用,你的信息沒有保障,怕是要上天哦。
關(guān)于W3C委員會制定的XMLHttpRequest跨域訪問標準,感興趣的話自己去查一下了解一下就行。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容