前言 這篇文章最初由盆盆發表在華來四微信公衆號(微信號:sysinternal)。Edge是Windows 10裏的最新瀏覽器,聽說要取代統治已久的IE瀏覽器!那麼咱們來看看這個最新的Edge瀏覽器和Chrome在性能和安全性方面的到底孰優孰劣呢?對了,盆盆還會順手捎帶Cortana的部分特性。瀏覽器
盆盆使用的Windows 10已經升級到最新的10061版本。裏面自帶了微軟最新的Edge瀏覽器,聽說從此將會取代IE瀏覽器。安全
那麼這款最新的Edge瀏覽器,和Chrome相比,在性能和安全性方面到底孰優孰劣呢?微信
沙盒技術網絡
你們都知道Chrome瀏覽器實現了自有的沙盒(sandbox)技術,所謂沙盒,從安全的角度看和Docker相似,都是一種進程隔離技術。ide
如下是Chrome沙盒原理示意圖,具體解釋能夠參考如下網頁。大體意思是Chrome會有一個高級進程,充當代理(Broker)。而每一個網頁,則獨立封裝在一個沙盒進程中,而相似保存文件等高特權的操做,都由Broker進程代勞。Broker進程和沙盒之間經過IPC機制通訊。工具
https://www.chromium.org/developers/design-documents/sandbox 性能
而Edge瀏覽器一樣採用Windows 10自有的沙盒技術,叫作App Container技術。一樣會有一個高級進程,充當代理,名稱叫作browser_broker.exe。而每一個網頁對應的進程叫作Edge_edge.exe。代理進程負責啓動網頁,同時執行相似文件保存等高特權動做。spa
對於Chrome來講,其Flash支持也做爲一個獨立的沙盒進程來實現,這樣安全性更高。因爲Chrome的子進程名稱徹底同樣,因此能夠從其線程中獲知其Flash支持的進程是哪個。線程
而對於Edge來講,其Flash支持也是做爲一個普通的獨立進程而存在,但並非沙盒進程。代理
性能對比
Edge瀏覽器和Chrome到底誰性能更好?
其實比較難對比,由於二者的渲染引擎不一樣,得看網頁自己的支持,不能光看內存佔用等指標。
爲了公平起見,這裏對空白網頁的兩個瀏覽器的內存佔用進行比較,同時再比較啓動新浪微博時的內存佔用。
Edge
當啓動空白網頁時,Edge一共啓動5個進程,其內存佔用的截圖以下。這些進程一共佔用約43MB內存。
當咱們把鼠標焦點指向地址欄並準備輸入內容時,Edge會啓動一個新的Edge_edge進程,其父進程爲Edge。該進程專門用來接收地址欄操做。
輸入新浪微博地址並回車,再查看內存佔用,如截圖所示。因爲地址欄對應的進程過段時間會退出(也能夠手動關閉)。因此一共消耗內存爲182MB,若是算上地址欄進程,則一共爲223MB。
整理以下表所示。
Chrome
同理統計Chome的空白網頁內存佔用,共計消耗207MB內存,比Edge多約150MB。
當打開新浪微博時,共計消耗338MB內存,若是不算Edge的地址欄進程,則多出約150MB內存,若是算上的話,則多出約110MB內存。
整理以下表所示。
這裏仍是得說明,內存佔用不能做爲二者性能的最終要素,不過Edge還有殺手鐗。當咱們把網頁最小化後,咱們會發現其對應的Edge進程立刻暫停,從而把CPU佔有率降到0。若是恢復網頁大小,則進程當即恢復運行。
其實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鏈接、家庭和工做網絡訪問能力等等,如附圖所示。
開始菜單裏的Cortana也是採用相似的沙盒技術。
能夠看到Cortana進程要求更多的資源訪問能力。經過這種對進程的資源訪問能力加以限制,可讓Windows 10的沙盒進程得到更好的隔離能力。
再回到Edge的安全屬性對話框,能夠看到其中有一個S-15-2開頭的SID被標記爲AppContrainer。
除了採用保護模式和限制資源訪問能力,Windows 10沙盒還利用了遠程桌面的會話隔離技術。
用WinObj工具能夠看到,在當前的用戶會話1中多出了一個名爲AppContrainerNamedObjects文件夾,Edge沙盒在其下建立了一個以上述S-1-15-2開頭SID爲名的子文件夾,Edge沙盒進程所需的事件、信號對象以及RPC控制對象都會放在這裏。
Chrome
Chrome的沙盒技術利用了Windows自有的安全技術,能夠看到其進程的安全級別比Chrome更低,沒有任何特權,並且幾乎全部的SID都標記爲Deny。
同時若是查看網頁進程的句柄,能夠發現其沒有用戶桌面的訪問能力,在以下的截圖中,咱們能夠看到該進程並無WinSta0窗口站的訪問能力。根據谷歌官網的說法,這能夠防止網頁進程裏可能存在的惡意代碼向用戶桌面發動粉碎***的可能。
可是盆盆不太清楚,既然網頁進程沒有用戶桌面的句柄,那這個網頁又是如何顯示在用戶桌面上的呢?不知道是否是經過IPC機制讓Broker進程代勞,很顯然Broker進程擁有用戶桌面的句柄。
盆盆點評 二者的安全對比,Edge和Chrome都採用沙盒技術,都徹底知足用戶安全瀏覽的需求。二者難分伯仲。