第二章 瀏覽器安全

2.1 同源策略

瀏覽器的同源策略(Same Origin Policy)限制了來自不一樣源的「document」或腳本,對當前「document」讀取或設置某些屬性。同源策略保證來自不一樣源的對象沒法相互干擾,避免瀏覽器頁面行爲混亂。html

JavaScript同源狀況舉例:java

URL Outcome Reason
store.company.com/dir2/other.… Success
store.company.com/dir/another… Success
store.company.com/secure.html Failure Different protocol
store.company.com:81/secure.html Failure Different port
news.company.com/secure.html Failure Different host

由上表可看出,影響「源」的因素包括: 域名host、子域名、端口port、協議protocolweb

Notice: 對於當前頁面來講,頁面存放的JavaScript文件的域並不重要,重要的是加載JavaScript頁面所在的域是什麼shell

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

a.com經過以上代碼加載了b.com上的b.js,可是b.js是運行在a.com頁面中,所以對於當前打開的a.com來講,b.js的Origin就是a.com。瀏覽器

在瀏覽器中,<script><img><iframe>等標籤均可以跨域加載資源,而不受同源策略的限制。安全

W3C制定了XMLHttpRequest跨域訪問標準。它須要經過目標域返回的HTTP請求頭來受權是否容許跨域訪問。對於瀏覽器來講,DOM、Cookie、XMLHttpRequest會受到同源策略的限制,還有一些第三方插件例如Flash、Google Gears等也有各自的同源策略。服務器

2.2 瀏覽器沙箱

瀏覽器沙箱(Sandbox)是瀏覽器多進程架構中將瀏覽器各個功能模塊分開的一種隔離。產生背景是因爲瀏覽器爲了應對「掛馬」問題,將單進程變爲多進程。架構

Sandbox的設計目的是爲了讓不可信的代碼運行在必定的環境內,限制不可信的代碼訪問隔離區以外的資源。網站

Chrome 瀏覽器是第一個採用多進程架構的瀏覽器。 Chrome 瀏覽器包含瀏覽器進程、渲染進程、插件進程以及擴展進程。插件進程,好比 flash、java 等進程會與瀏覽器進程嚴格隔離。

渲染進程被沙箱(Sandbox)隔離,網頁 web 代碼內容必須經過 IPC 通道才能與瀏覽器內核進程通訊,通訊過程會進行安全的檢查。

多進程相比於單進程,在發生崩潰時,多進程瀏覽器只會崩潰當前頁面,而單進程瀏覽器則會崩潰整個瀏覽器進程。

2.3 惡意網址攔截

惡意網址攔截的原理通常都是經過瀏覽器週期性的從服務器端獲取一份最新的惡意網站黑名單,對於用戶訪問的網址進行一個驗證,判斷是否屬於此黑名單網址。

常見惡意網址分類:

  • 掛馬網站:一般包含惡意的腳本如JavaScript或Flash,經過瀏覽器漏洞執行shellcode,植入木馬
  • 釣魚網站:經過模仿其餘知名網站的類似頁面來欺騙用戶

目前防護手段:

  • PhishTank免費提供惡意網址黑名單,且頻繁更新
  • Google公開其內部的SafeBrowsing API
  • 主流瀏覽器支持EV SSL證書,加強對安全網站的識別

2.4 瀏覽器安全的發展

  • 微軟在IE 8中推出了XSS Filter功能,對抗反射型XSS(跨站腳本攻擊):當用戶訪問的URL中包含了XSS攻擊的腳本時,IE會修改其中的關鍵字符使攻擊沒法完成,並彈出提示框
  • Firefox推出CSP(內容安全策略):有服務器返回一個HTTP頭,並在其中描述頁面應遵循的安全策略,因爲XSS攻擊在沒有第三方插件的幫助下,沒法控制HTTP頭,因此這項措施是可行的

2.5 小結

瀏覽器的安全是以同源策略爲基礎的,加深理解同源策略,才能把握瀏覽器安全的本質。

相關文章
相關標籤/搜索