1. 程式人生 > >瀏覽器安全

瀏覽器安全

特定 失效 amp 請求 廠商 不同 sil 利用 text

  絕大多數互聯網用戶使用聯網的工具是瀏覽器,隨著瀏覽器版本的不斷更新,瀏覽器的安全功能也變得越來越重要,總結了一下主要的瀏覽器安全功能。

一.同源策略

  同源策略是一種約定,它是瀏覽器最核心的也是最基本的安全功能,很多時候瀏覽器的實現的同源策略是隱形的,透明的,瀏覽器的同源策略,限制了來之不同源的“document”或者腳本,對當前“document”讀取或者設置某些屬性,阻止瀏覽器的頁面行為發生混亂。

影響“源”的因素有:域名,子域名,端口,協議。對於當前頁面來說,頁面內存放JavaScript文件的域並不重要,重要的是加載JavaScript頁面所在的域是什麽。例如,a.com通過以下代碼:

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

加載了b.com上的b.js文件,但是b.js文件是由a.com加載運行的,所以源應該是a.com而不是b.com。

  在瀏覽器中,<script>,<img>,<iframe>,<link>等標簽都可以跨域加載資源,而不受同源策略的限制。這些帶“src”屬性的標簽每次加載時,實際上就是由瀏覽器發起了一次GET請求。不同於XMLHttpResquet的是,通過src屬性加載的資源,瀏覽器限制了JavaScript的權限,讓其不能讀,寫返回的內容

。XMLHttpRequest有一套跨域訪問的標準,就是通過目標域返回的HTTP頭來授權是否允許跨域訪問,因為HTTP頭對於JavaScript來說一般是無法控制的

  對於瀏覽器來說,不僅DOM,Cookie,XMLHttpRequest會受到同源策略的限制,瀏覽器加載的一些第三方插件和擴展也有各自的同源策略,最常見的插件如Flash,Java Applet,Silverlight,Google Gears等都有自己的控制策略。

  以Flash為例,它主要通過目標網站提供的crossdomain.xml文件判斷是否允許當前“源”的Flash跨域訪問目標資源,從“源”的層面控制了Flash行為的安全性。Flash9版本後,還實現了MIME檢查以確認crossdomain.xml是否合法

,比如查看服務器返回的HTTP頭的Content-Type是否是text/*,application/xml,application/xhtml+xml。這樣做的原因,是因為攻擊者可以通過上傳crossdomain.xml文件控制Flash的行為,繞過同源策略。除了MIME檢查外,Flash還會檢查crossdomain.xml是否在根目錄下,也可以使得一些上傳文件的攻擊失效。

二.瀏覽器沙箱

  沙箱,已經泛指“資源隔離模塊”的代名詞,沙箱設置的目的就在於為了讓不可信任的代碼運行在一定的環境中,限制不可信任的代碼訪問隔離區外的資源。如果一定要跨越沙箱邊界產生數據交換,則只能通過特定的數據通道,比如經過封裝的API來完成,在這些API中會嚴格檢查請求的合法性。對於瀏覽器來說,沙箱技術,可以讓不受信任的網頁代碼,JavaScript代碼運行在一個受限制的環境中,從而保證本地桌面系統的安全。

  瀏覽器發展出了多進程架構,每一個頁面就是一個進程,發生崩潰的時候,只會崩潰當前的頁面進程,不會影響到其他的頁面進程,既提高了安全性,又提升了用戶體驗。但瀏覽器安全是一個整體,雖有多進程架構和沙箱技術的保護,但是瀏覽器所加載的一些第三方插件卻往往不收沙箱管轄,一些三方插件一方面試自身脆弱,容易被攻擊,另一方面是有些三方軟件行為就是帶有惡意的。

三.惡意網址攔截

  常見的惡意網址分為兩類:,一類是是“掛馬”網站,這些網站通常包含有惡意的腳本,通過利用瀏覽器的漏洞(包括一些插件和控件漏洞),執行shellcode,在用戶電腦中植入木馬;另一類就是釣魚網站,通過模仿知名網站的相似頁面來欺騙用戶。

  針對惡意網址攔截,目前瀏覽器廠商以推送惡意網址黑名單為主,現在的瀏覽器多是與專業的安全產商展開合作,由安全產商或機構提供惡意網址黑名單。

四.其他安全措施

  IE中有XSSFilter功能,用以對抗XSS。

  Firefox中有Content Security Policy。其做法就是有服務器返回一個HTTP頭,並在其中描述頁面應該遵守的安全策略。使用CSP的用法如下,插入一個HTTP返回頭:

X-Content-Security-Policy:policy

其中policy的描述比較靈活,例如:

X-Content-Security-Policy:allow ‘self‘*.com

瀏覽器將信任來自mydomain.com及其子域下的內容。

再比如:

X-Content-Security-Policy:allow ‘self‘;img-src*;media-src medial.com; script-src userscripts.example.com

除了信任自身來源之外,還可以加在任意域的圖片,來自medial.com的媒體文件,以及userscripts.example.com的腳本,其他的規律一律拒絕。

CSP的設計理念是出色的,就是配置規則在頁面較多的時候有點復雜。

瀏覽器安全