淺析瀏覽器同源策略

瀏覽器安全以同源策略爲基礎,理解同源策略才能把握客戶端安全本質html

web是創建在同源策略之上的,瀏覽器只是針對同源策略的一種實現java

同源策略

  瀏覽器的同源策略,限制了來自不一樣源的「document」和腳本
web

  判斷資源是否同源,如下狀況認爲同源、非同源:ajax

URL outcome reason
http://store.company.com/dir/a.html 同源  
http://store.company.com/dir/b.html 同源  
http://store.company.com:8080/dir/a.html 端口號
https://store.company.com/dir/a.html 協議
http://news.company.com/dir/a.html 域名(ip)

  影響「源」的因素:host(域名、IP),端口,協議跨域

  特別注意:瀏覽器

  在a.com中執行以下代碼
安全

<script src="http://b.com/b.js"></script>

  試問,b.js的源是誰?答案是a.com服務器

  雖然從b.com中加載了b.js,可是b.js是在a.com中運行的,所以對當前打開的界面(a.com),b.js的源是a.com多線程

 

帶src屬性的標籤的同源策略

  <script>、<img>、<iframe>、<link>等標籤帶有src屬性,能夠跨域加載資源,不受同源策略限制架構

  這些標籤加載時,其實是瀏覽器發起了一個GET請求

  不一樣於XMLHttpRequest,經過src加載資源的標籤,瀏覽器限制了JavaScript的權限,使其不能讀、寫返回的內容

  好比,經過CDN加載jQuery,就沒法讀寫其返回的內容

 

XMLHttpRequest對象的同源策略

  XMLHttpRequest對象不能跨域訪問資源,所以在ajax開發中要注意跨域問題

  可是近年W3C制定了XMLHttpRequest對象跨域訪問的標準:

    經過目標域返回的HTTP頭來受權是否容許跨域訪問【這個跨域訪問方案的基礎是:JavaScript沒法控制HTTP頭】

        

 

瀏覽器沙箱模型(SandBox)

  「掛馬」 :在網頁中插入一段惡意代碼,利用瀏覽器漏洞執行代碼的攻擊方式

  Chrome是第一個採起多進程架構的瀏覽器(不是多線程,是多進程);多進程架構講瀏覽器各個功能模塊分開,各個瀏覽器實例分開,當一個進程崩潰時,不會影響到其餘的進程

  Chrome主要進程分爲:瀏覽器進程,渲染進程,插件進程,擴展進程。插件進程如:flash,java,pdf等與瀏覽器進程嚴格隔離

  SandBox 即沙箱,SandBox泛指「資源隔離模塊」

 

惡意網址攔截

  工做原理:瀏覽器週期性的從服務器端獲取一份最新的惡意網址的黑名單,若是用戶上網的網址在此名單中,瀏覽器給出警告

  惡意網站分類:

  • 掛馬網站 ,網頁中包含的惡意腳本對用戶進行攻擊
  • 釣魚網站, 模仿知名網站界面

  PhishTank 是免費提供惡意網址黑名單的組織,名單由各地誌願者提供,更新頻繁

相關文章
相關標籤/搜索