【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): 提供更多关于数据库格式和更新过程的信息。
【Chromium中文文档】安全浏览 -- Chrome中的警告都是怎么来的?的更多相关文章
- 学习Python 新去处:Python 官方中文文档
Python 作为世界上最好用的语言,官方支持的文档一直没有中文.小伙伴们已经习惯了原汁原味的英文文档,但如果有官方中文文档,那么查阅或理解速度都会大大提升.本文将介绍隐藏在 Python 官网的中文 ...
- Kotlin 中文文档
Kotlin 中文文档 标签: Kotlinkotlin中文文档 2017-02-14 18:14 4673人阅读 评论(0) 收藏 举报 分类: kotlin 转载地址:http://www.tu ...
- 【Chromium中文文档】Chrome/Chromium沙箱 - 安全架构设计
沙箱 转载请注明出处:https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh//General_Architecture/Sandbox.ht ...
- 【Chromium中文文档】进程模型
进程模型 转载请注明出处:https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh//General_Architecture/Process_ ...
- 【Chromium中文文档】OS X 沙箱设计
OS X 沙箱设计 转载请注明出处:https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh//General_Architecture/OSX ...
- 【Chromium中文文档】Profile架构(看看谷歌家的重构)
进程模型 转载请注明出处:https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh//General_Architecture/Profile_ ...
- 【Chromium中文文档】多进程资源加载
多进程资源加载(需要更新) 转载请注明出处:https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh//General_Architecture ...
- 【Chromium中文文档】Chrom{e,ium}{,OS}中的硬件视频加速
Chrom{e,ium}{,OS}中的硬件视频加速 转载请注明出处:https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh//General_ ...
- 【Chromium中文文档】Web安全研究
转载请注明出处:https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh//General_Architecture/Extension_Sec ...
随机推荐
- Netty详解
Netty详解 http://blog.csdn.net/suifeng3051/article/category/2161821
- css实现两端对齐的3种方法
两端对齐在移动端非常见,说到两端对齐,大家并不陌生,在word.powerpoint.outlook等界面导航处,其实都有一个两端对齐(分散对齐)的按钮,平时使用的也不多,我们更习惯与左对齐.居中对齐 ...
- 如何解决jquery库的冲突问题
多个库之间的冲突 当一个项目中引入多个第三方库的时候,由于没有命名空间的约束(命名空间就好比同一个目录下的文件夹一样,名字相同就会产生冲突),库与库之间发生冲突在所难免. 那么,既然有冲突的问题,为什 ...
- Hibernate 命名查询NamedQuery (转)
转自:http://blog.163.com/ksm19870304@126/blog/static/374552332011993942391/ 配置方式: static List namedQue ...
- ASP.NET自定义控件加载资源WebResource问题
最近项目用日期控件,想把My97的资源文件跟TextBox封装成一个DatePicker控件,其实很简单的意见事情,但是还是用了一天多的时间,主要的问题就是解决资源文件加载的问题.通过一天多的努力,得 ...
- grep 基于关键字搜索
grep 'linux' /etc/passwd 搜索passwd文件下的包含linux的行 find / -user linux|grep Video 在用户为linux的根目录下搜房Video内容 ...
- 网易云课堂_C语言程序设计进阶_第二周:指针:取地址运算和指针、使用指针、指针与数组、指针与函数、指针与const、指针运算、动态内存分配_2信号报告
2 信号报告(5分) 题目内容: 无线电台的RS制信号报告是由三两个部分组成的: R(Readability) 信号可辨度即清晰度. S(Strength) 信号强度即大小. 其中R位于报告第一 ...
- 支付宝“订单交易失败 ALI64” 报错的原因
移动快捷支付,往往需要集成支付宝的sdk,集成的过程相对简单,只要按照支付宝的文档,进行操作一般不会出问题. 下面主要说明一下,集成sdk后报 "订单交易失败 请稍后再试(ALI64)&qu ...
- Highways(求最小生成树的最大边)
Highways Time Limit : 2000/1000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other) Total Sub ...
- 关于我和document.write那点不得不说的事
一直用document.write()方法向浏览器中显示数据用,把它当做Alert()使用, 看来这样用有些大材小用了,下面说说它的主要用处. document.write()方法可以用在两个方面: ...