Windows 10瀏覽器Edge和Chrome大比拼

前言 這篇文章最初由盆盆發表在華來四微信公衆號(微信號:sysinternal)。Edge是Windows 10裏的最新瀏覽器,據說要取代統治已久的IE瀏覽器!那麼我們來看看這個最新的Edge瀏覽器和Chrome在性能和安全性方面的到底孰優孰劣呢?對了,盆盆還會順手捎帶Cortana的部分特性。


盆盆使用的Windows 10已經升級到最新的10061版本。裏面自帶了微軟最新的Edge瀏覽器,據說今後將會取代IE瀏覽器。


那麼這款最新的Edge瀏覽器,和Chrome相比,在性能和安全性方面到底孰優孰劣呢?


沙盒技術


大家都知道Chrome瀏覽器實現了自有的沙盒(sandbox)技術,所謂沙盒,從安全的角度看和Docker類似,都是一種進程隔離技術。


以下是Chrome沙盒原理示意圖,具體解釋可以參考以下網頁。大致意思是Chrome會有一個高級進程,充當代理(Broker)。而每個網頁,則獨立封裝在一個沙盒進程中,而類似保存文件等高特權的操作,都由Broker進程代勞。Broker進程和沙盒之間通過IPC機制通信。

https://www.chromium.org/developers/design-documents/sandbox

0?wx_fmt=png


而Edge瀏覽器同樣採用Windows 10自有的沙盒技術,叫做App Container技術。同樣會有一個高級進程,充當代理,名稱叫做browser_broker.exe。而每個網頁對應的進程叫做Edge_edge.exe。代理進程負責啓動網頁,同時執行類似文件保存等高特權動作。

0?wx_fmt=png


對於Chrome來說,其Flash支持也作爲一個獨立的沙盒進程來實現,這樣安全性更高。由於Chrome的子進程名稱完全一樣,所以可以從其線程中獲知其Flash支持的進程是哪一個。

0?wx_fmt=png


而對於Edge來說,其Flash支持也是作爲一個普通的獨立進程而存在,但並不是沙盒進程。


性能對比


Edge瀏覽器和Chrome到底誰性能更好?


其實比較難對比,因爲兩者的渲染引擎不同,得看網頁本身的支持,不能光看內存佔用等指標。


爲了公平起見,這裏對空白網頁的兩個瀏覽器的內存佔用進行比較,同時再比較啓動新浪微博時的內存佔用。


Edge


當啓動空白網頁時,Edge一共啓動5個進程,其內存佔用的截圖如下。這些進程一共佔用約43MB內存。

0?wx_fmt=png


當我們把鼠標焦點指向地址欄並準備輸入內容時,Edge會啓動一個新的Edge_edge進程,其父進程爲Edge。該進程專門用來接收地址欄操作。


輸入新浪微博地址並回車,再查看內存佔用,如截圖所示。由於地址欄對應的進程過段時間會退出(也可以手動關閉)。所以一共消耗內存爲182MB,如果算上地址欄進程,則一共爲223MB。

0?wx_fmt=png


整理如下表所示。

0?wx_fmt=png

Chrome


同理統計Chome的空白網頁內存佔用,共計消耗207MB內存,比Edge多約150MB。

0?wx_fmt=png


當打開新浪微博時,共計消耗338MB內存,如果不算Edge的地址欄進程,則多出約150MB內存,如果算上的話,則多出約110MB內存。

0?wx_fmt=png

整理如下表所示。

0?wx_fmt=png


這裏還是得說明,內存佔用不能作爲兩者性能的最終要素,不過Edge還有殺手鐗。當我們把網頁最小化後,我們會發現其對應的Edge進程馬上暫停,從而把CPU佔有率降到0。如果恢復網頁大小,則進程立即恢復運行。

0?wx_fmt=png


其實Edge瀏覽器,完全是一個Metro風格的進程。


盆盆點評 兩者的性能比較,單就訪問微博的內存佔用而言,Edge更勝一籌。


安全對比


接下來再看看Edge和Chrome安全能力的對比。


Edge


Edge採用了Windows 10 Metro風格進程的沙盒技術,可以看到其網頁進程的完整性級別是Low,表示其採用了Windows保護模式。


盆盆從2005年開始就開始研究保護模式,當時還幫助支付寶解決和IE的兼容性問題。完整性級別爲Low的進程,只能訪問以下資源:

    .Read access to most files
    .Write access to %USER PROFILE%\AppData\LocalLow
    .Read access to most of the registry
    .Write access to HKEY_CURRENT_USER\Software\AppDataLow
    .Clipboard (copy and paste for certain formats)
    .Remote procedure call (RPC)
    .TCP/IP Sockets
    .Window messages exposed via ChangeWindowMessageFilter
    .Shared memory exposed via LI (low integrity) labels
    .COM interfaces with LI (low integrity) launch activation rights
    .Named pipes exposed via LI (low integrity) labels


同時在網頁進程裏,我們還可以看到該進程所具有的資源訪問能力,例如指定Internet連接、家庭和工作網絡訪問能力等等,如附圖所示。

0?wx_fmt=png


開始菜單裏的Cortana也是採用類似的沙盒技術。

0?wx_fmt=png


可以看到Cortana進程要求更多的資源訪問能力。通過這種對進程的資源訪問能力加以限制,可以讓Windows 10的沙盒進程獲得更好的隔離能力。

0?wx_fmt=png


再回到Edge的安全屬性對話框,可以看到其中有一個S-15-2開頭的SID被標記爲AppContrainer。

0?wx_fmt=png


除了採用保護模式和限制資源訪問能力,Windows 10沙盒還利用了遠程桌面的會話隔離技術。


用WinObj工具可以看到,在當前的用戶會話1中多出了一個名爲AppContrainerNamedObjects文件夾,Edge沙盒在其下創建了一個以上述S-1-15-2開頭SID爲名的子文件夾,Edge沙盒進程所需的事件、信號對象以及RPC控制對象都會放在這裏。

0?wx_fmt=png


Chrome


Chrome的沙盒技術利用了Windows自有的安全技術,可以看到其進程的安全級別比Chrome更低,沒有任何特權,而且幾乎所有的SID都標記爲Deny。

0?wx_fmt=png


同時如果查看網頁進程的句柄,可以發現其沒有用戶桌面的訪問能力,在如下的截圖中,我們可以看到該進程並沒有WinSta0窗口站的訪問能力。根據谷歌官網的說法,這可以防止網頁進程裏可能存在的惡意代碼向用戶桌面發動粉碎***的可能。

0?wx_fmt=png


但是盆盆不太清楚,既然網頁進程沒有用戶桌面的句柄,那這個網頁又是如何顯示在用戶桌面上的呢?不知道是不是通過IPC機制讓Broker進程代勞,很顯然Broker進程擁有用戶桌面的句柄。


盆盆點評 兩者的安全對比,Edge和Chrome都採用沙盒技術,都完全滿足用戶安全瀏覽的需求。兩者難分伯仲。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章