安全浏览

转载请注明出处: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中的警告都是怎么来的?的更多相关文章

  1. 学习Python 新去处:Python 官方中文文档

    Python 作为世界上最好用的语言,官方支持的文档一直没有中文.小伙伴们已经习惯了原汁原味的英文文档,但如果有官方中文文档,那么查阅或理解速度都会大大提升.本文将介绍隐藏在 Python 官网的中文 ...

  2. Kotlin 中文文档

    Kotlin 中文文档 标签: Kotlinkotlin中文文档 2017-02-14 18:14 4673人阅读 评论(0) 收藏 举报  分类: kotlin 转载地址:http://www.tu ...

  3. 【Chromium中文文档】Chrome/Chromium沙箱 - 安全架构设计

    沙箱 转载请注明出处:https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh//General_Architecture/Sandbox.ht ...

  4. 【Chromium中文文档】进程模型

    进程模型 转载请注明出处:https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh//General_Architecture/Process_ ...

  5. 【Chromium中文文档】OS X 沙箱设计

    OS X 沙箱设计 转载请注明出处:https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh//General_Architecture/OSX ...

  6. 【Chromium中文文档】Profile架构(看看谷歌家的重构)

    进程模型 转载请注明出处:https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh//General_Architecture/Profile_ ...

  7. 【Chromium中文文档】多进程资源加载

    多进程资源加载(需要更新) 转载请注明出处:https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh//General_Architecture ...

  8. 【Chromium中文文档】Chrom{e,ium}{,OS}中的硬件视频加速

    Chrom{e,ium}{,OS}中的硬件视频加速 转载请注明出处:https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh//General_ ...

  9. 【Chromium中文文档】Web安全研究

    转载请注明出处:https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh//General_Architecture/Extension_Sec ...

随机推荐

  1. uilable 换行标记

    m_tipLabel.lineBreakMode = UILineBreakModeWordWrap; m_tipLabel.numberOfLines = 0; m_tipLabel.text =  ...

  2. protocol(协议)

      可以用来声明一大堆方法(不能声明成员变量) 只要某个类遵守了这个协议,就相当于拥有这个协议中的所有方法声明 只要父类遵守了某个协议,就相当于子类也遵守了   //定义一个名叫MyProtocol的 ...

  3. Python学习笔记(二)Python的数据类型和变量

    Python的字符串 Python使用''和""将字符串括起来,与ruby类似,特殊之处是Python可以使用r''表示''内部的字符串默认不转义,如: print(r'\\\t\ ...

  4. sqlmap的详细使用

    各项参数讲的太仔细了,对于只会几个参数的我来说,太受用了. 先mark下 http://drops.wooyun.org/tips/143 http://drops.wooyun.org/tips/4 ...

  5. document.ready()的用法

    1.Jquery是优秀的Javascrīpt框架,$是jquery库的申明,它很不稳定(我就常遇上),换一种稳定的写法jQuery.noConflict(); jQuery(document).rea ...

  6. .Net中String和StringBuilder的区别

    String对象是不可变的而StringBuilder则不是这样,可以方便的Append进行扩展. 比如:string aa="123456",那么aa就会在内存中占用一块能放下这 ...

  7. 适应多行长文本的Android TextView

    适应多行长文本的Android TextView

  8. 微信的分享功能(针对web手机站页面进行的分享功能)

    把这段js粘贴进,设置可以分享的页面,当微信打开,即可微信进行分享各个圈 $(function(){ var lujing=$("#logimg").attr("src& ...

  9. test for randomness

  10. Php开源项目大全

    WordPress  [PHP开源 博客Blog] WordPress是最热门的开源个人信息发布系统(Blog)之一,基于PHP+MySQL构建.WordPress提供的功能包括: 1.文章发布.分类 ...