【Chromium中文文檔】安全瀏覽 -- Chrome中的警告都是怎么來的?

轉載請注明出處:
https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh/General_Architecture/SafeBrowsing.html

全書地址
Chromium中文文檔 for https://www.chromium.org/developers/design-documents
持續更新ing,歡迎star
gitbook地址:https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh//
github地址: https://github.com/ahangchen/Chromium_doc_zh

瀏覽保護

啟動安全瀏覽后,在允許內容開始加載前,所有的URL都會被檢查。URL通過兩個列表進行檢查:惡意軟件和釣魚網站。根據匹配到的列表,我們會在一個中轉頁面顯示不同的警告頁面。

檢查安全瀏覽數據庫是一個多步驟的過程。

  • URL首先會被哈希,然后會用內存中前綴列表進行同步的檢查。
  • 如果前綴得到匹配,會向安全瀏覽服務器發起一個異步請求,拉取這個前綴的全量哈希列表。
  • 一旦這個列表返回,完整的哈希會與列表中的每項進行比較,URL請求可以繼續執行或者終止。
  • 如果想要知道更多內容,你可以查看安全瀏覽協議的完整描述。

資源處理器

當一個資源被請求時,ResourceDispatcherHost會創建一串的ResourceHandlers。對于加載資源時的每個事件,每個處理器可以選擇取消請求,延遲請求(在決定要做的事情前,做一些異步工作),或者繼續(讓處理鏈中下一個處理器做決策)。SafeBrowsingResourceHandler在鏈的頭部創建,所以它對于是否允許加載資源有著優先權。如果安全瀏覽被關閉,SafeBrowsingResourceHandler就不加入鏈中,因此沒有瀏覽相關的安全瀏覽動作會發生。

安全瀏覽中間頁面

當資源被標識為不安全時,資源請求會被暫停,并展示一個中間頁面(SafeBrowsingBlockingPage)。用戶可以選擇繼續,這會喚醒資源請求,或者返回,這會取消資源請求,然后返回之前的頁面。

一些威脅細節的收集

如果中間頁面是因為命中下面這些規則而展現:處于威脅列表中(包括惡意軟件,釣魚網站,以及Uws),頁面是http而非https,標簽頁不處于一個匿名窗口中,那么會有一個可選項,讓你發送關于這個不安全資源的具體細節,以進行更進一步的分析。

當中間頁面出現時,一個IPC會發送給渲染器進程,從DOM收集細節。這些數據由一棵URL樹組成,有各種frame,iframe,腳本,和嵌入標簽。

如果用戶勾選了忽視中間頁面,各種具體細節會異步地在瀏覽器端收集。首先會查詢歷史服務以獲得所有URL的重定向列表,然后會查詢Cache以獲得這些URL請求的頭,最后發送一個報告。

下載保護

URL檢查

下載檢查操作與瀏覽頁面的操作類似,盡管由于下載的本質不同會有一些差異。在接收到頭之前,我們都不知道一個資源請求是否是一個下載請求,因此所有下載也會通過瀏覽檢查。同理,我們不能檢查重定向URL,因為在瀏覽測試中我們已經放過它了。相反,重定向鏈保存在一個URLRequest對象里,一旦我們開始下載檢查,鏈中所有的URL同時會被檢查。因為下載不像頁面加載那樣具備潛在的敏感,我們也會在內存數據庫和全量哈希結果中分發要檢查的內容。最后,檢查與下載并行完成,而不會阻塞下載結果直到檢查完成,然而直到檢查完成前,文件都會被賦予一個臨時的名字。

如果一個下載被標記為惡意的,下載欄的這個項目會被替換為一個警告和一個保留或刪除該文件的按鈕。如果選擇了刪除,下載會被取消,文件會被刪除。如果選擇了保留,文件會被重命名為它原來的名字(如果下載仍在進行,后綴會是.crdownload)。

哈希檢查

文件下載時,我們也會計算文件數據的哈希值。一旦文件完成下載,這個哈希值就會與下載摘要列表進行對照。當前我們在評估哈希檢查的有效性,所以不會有UI展示出來。

這是處理一個請求的代碼流的概覽。一些細節被隱藏以保證規模的合理性。綠線意味著一種常見情況,加載非惡意頁面的頁面時,需要同步檢查內存中安全瀏覽數據庫。短劃線表示異步調用。點狀箭頭表示對Google安全瀏覽器的請求。

客戶端釣魚檢測

客戶端釣魚檢測運行在用戶訪問的頁面的檢測模式上,以檢測釣魚網站沒有被列入安全瀏覽列表。啟動時,以及之后的周期中,ClientSideDetectionService會抓取最新的模型。這個模型會通過IPC發送給每個渲染進程,然后分配給與每個RenderView關聯的PhishingClassifierDelegate。這允許了在渲染進程檢查中完成分類。(渲染進程訪問頁面文本。)

資源請求流

這是一個處理請求的代碼流的概覽圖。一些細節被隱藏以保證規模合理性。綠線意味著一種常見情況,加載非惡意頁面的頁面時,需要同步檢查內存中安全瀏覽數據庫。短劃線表示異步調用。點狀箭頭表示對Google安全瀏覽器的請求。

安全瀏覽資源請求圖

規范

安全瀏覽柱狀圖使用“SB2.”前綴。舊版本的柱狀圖使用“SB.”前綴。也有一些安全瀏覽用戶規范(可以用“SB”前綴過濾),和一些瀏覽Rappor規范(前綴是“interstitial”)。

安全瀏覽數據庫

SafeBrowsingService負責更新各種安全瀏覽使用的數據庫。

TODO(mattm): 提供更多關于數據庫格式和更新過程的信息。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,937評論 18 139
  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,958評論 6 342
  • 一、概念(載錄于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434閱讀 8,440評論 6 152
  • AJAX 原生js操作ajax 1.創建XMLHttpRequest對象 var xhr = new XMLHtt...
    碧玉含香閱讀 3,274評論 0 7
  • 重述知識 這頁說了什么內容(what): CC1 ICE Break作為10個演講訓練的第一項內容:破冰演講,主要...
    祥祥布魯斯閱讀 492評論 0 0