瀏覽器的同源策略(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等也有各自的同源策略。服務器
瀏覽器沙箱(Sandbox)是瀏覽器多進程架構中將瀏覽器各個功能模塊分開的一種隔離。產生背景是因爲瀏覽器爲了應對「掛馬」問題,將單進程變爲多進程。架構
Sandbox的設計目的是爲了讓不可信的代碼運行在必定的環境內,限制不可信的代碼訪問隔離區以外的資源。網站
Chrome 瀏覽器是第一個採用多進程架構的瀏覽器。 Chrome 瀏覽器包含瀏覽器進程、渲染進程、插件進程以及擴展進程。插件進程,好比 flash、java 等進程會與瀏覽器進程嚴格隔離。
渲染進程被沙箱(Sandbox)隔離,網頁 web 代碼內容必須經過 IPC 通道才能與瀏覽器內核進程通訊,通訊過程會進行安全的檢查。多進程相比於單進程,在發生崩潰時,多進程瀏覽器只會崩潰當前頁面,而單進程瀏覽器則會崩潰整個瀏覽器進程。
惡意網址攔截的原理通常都是經過瀏覽器週期性的從服務器端獲取一份最新的惡意網站黑名單,對於用戶訪問的網址進行一個驗證,判斷是否屬於此黑名單網址。
常見惡意網址分類:
目前防護手段:
瀏覽器的安全是以同源策略爲基礎的,加深理解同源策略,才能把握瀏覽器安全的本質。