1. 我们正在构建什么?
Web 平台是一组开放且免版税的技术集合,用于支撑 Web。用户通过用户代理与网站交互, 例如 Web 浏览器,或代表用户行事的其他代理。
网站包含一系列文件格式——被动内容,例如字体、图像和多媒体,以及主动 内容,例如 HTML、JavaScript 和 WebAssembly——它们从服务器传输到用户的 设备,并由 Web 浏览器解释。被动内容会被解码和渲染;主动内容以其源的权限执行, 并构成 Web 的主要攻击面。这一区分很有用,但并非绝对:注入的 CSS 仍可能成为攻击面, 例如当选择器匹配和资源加载被用于推断或泄露页面状态时 [xsleaks-css-injection]。
因此,网站是主动执行环境。来自 Web 服务器的响应可以包含可执行 脚本、用户界面定义、对第三方资源的引用,以及导致 用户代理读取用户输入、更新界面、调用 Web API、存储或检索本地状态、 与底层平台交互并与远程服务通信的指令。这就是为什么 Web 浏览器在此上下文中是 一个关键角色:它在用户设备上执行来自不受信任且可通过网络访问的 网站的代码。
由于这种复杂性,本文档并不试图为 Web 定义一个单一且穷尽的威胁模型。由于 Web 是一个分层且不断演进的生态系统, 单一模型要么过于抽象,无法指导开发和评审工作,要么过于详细,难以保持可读和有用。 这遵循了 Shostack 威胁建模工作中的实用框架:模型是用于推理正在构建什么 以及可能出什么问题的抽象,并且不同模型在不同保真度层级上可能有用 [shostack-threat-modeling]。因此,本文档 充当一组相关威胁模型的集合。
1.1. 高层 Web 威胁模型
高层 Web 威胁模型是本文档中最抽象的模型。它将用户代理视为一个 单一进程,并且只描述主要元素、流和边界,以便在非常高的层级上进行推理。
1.1.1. 元素词典
| ID | 名称 | 类型 | 描述 |
|---|---|---|---|
| E0 | 用户 | 外部实体 | 通过用户代理与 Web 交互的人类用户。 |
| E1 | 远程 Web 源 | 外部实体 | 提供 HTML、CSS、JavaScript、WebAssembly、媒体、API、身份端点 和其他 Web 资源的远程源。 |
| E2 | 网络基础设施 | 外部实体 | 用于获取远程内容的本地网络、互联网路由、名称解析、传输协议和其他网络 服务。 |
| E3 | 操作系统 / 设备 / 平台 | 外部实体 | 文件系统、剪贴板、摄像头、麦克风、GPU、传感器、认证器、硬件支持的 能力,以及 Web 平台边界之外的其他平台服务。 |
| P0 | 用户代理 / Web 浏览器 | 进程 | 代表用户获取、解释、执行、调解、存储、渲染并 呈现 Web 内容的浏览器或其他用户代理。 |
| S0 | 浏览器管理的状态 | 数据存储 | Cookie、缓存、存储、权限、站点设置、会话状态、配置文件数据、凭据 引用,以及由用户代理控制或调解的其他状态。 |
| F0 | 用户交互 | 数据流 | 通过浏览器 UI、渲染内容、提示和其他用户代理 表面进行的用户输入和输出。 |
| F1 | Web 请求 / 响应 | 数据流 | 用户代理与远程 Web 源之间交换的请求和响应,通常通过 HTTP(S) 等网络协议。 |
| F2 | 子资源和第三方加载 | 数据流 | Web 内容导致用户代理从相同或不同源获取脚本、框架、媒体、字体、API 或其他 资源。 |
| F3 | 浏览器状态访问 | 数据流 | 用户代理与浏览器管理状态之间的读取和写入。 |
| F4 | 代理式平台访问 | 数据流 | 由浏览器调解的对操作系统、设备、传感器、认证器、文件系统、 剪贴板、图形、媒体或其他平台能力的访问。 |
1.1.2. 信任边界
| ID | 名称 | 描述 |
|---|---|---|
| B0 | 用户代理边界 | 将浏览器控制的行为与外部 Web 源、网络、用户以及 底层平台分隔开来。 |
| B1 | Web 源边界 | 将彼此不信任的源相互分隔开来。 |
| B2 | 网络边界 | 将用户代理和本地环境与远程网络基础设施和远程 服务分隔开来。 |
| B3 | 浏览器状态边界 | 将浏览器管理的状态与 Web 内容和外部参与者分隔开来。 |
| B4 | 操作系统 / 设备边界 | 将 Web 平台调解与较低层级的平台服务和能力分隔开来。 |
1.1.3. 与 Web 浏览器威胁模型的关系
高层威胁模型有意将大多数浏览器内部机制排除在视野之外。这使其在 评审对象是整个 Web 平台时很有用:源的角色、主要参与者,以及用户、 Web 内容、网络、浏览器管理的状态和底层平台之间的信任 边界。
当设计或评审取决于决策在哪里执行、 哪个浏览器组件保存状态、权限如何被调解、不受信任内容如何被隔离,或 Web API 如何触达操作系统公开的能力时,这一层级就不再充分。 在这些情况下,需要打开浏览器。下面的 Web 浏览器威胁模型为此目的扩展了 P0。
1.2. Web 浏览器威胁模型
Web 浏览器威胁模型概述了现代 Web 浏览器中反复出现的架构角色。
与在最小化 Web 威胁模型中那样将浏览器视为单个组件不同,此 抽象捕捉现代浏览器如何将责任分配到多个具有 不同权限、不同状态访问能力,并且对不受信任输入有不同暴露程度的进程中。它还捕捉 浏览器如何执行 Web 安全模型,包括基于源和站点的隔离策略,以及 它在处理来自外部 Web 服务器的输入时如何保护自身 [threat-modeling-guide]。
这两个关注点相关但并不相同。内容进程被隔离,不仅因为 Web 内容 不受信任,还因为浏览器必须维护同源隔离以及 浏览器与 OS/平台之间的分离。实践中,这些是不同的信任边界,即使某个 实现使用相同的进程架构来同时支持二者。
在各个 Web 浏览器之间,实现细节各不相同。即便如此,仍然会出现一个共同结构。
1.2.1. 特权浏览器进程
现代浏览器包括一个高权限控制组件,负责浏览器 UI、导航控制、 进程管理、策略执行、权限调解,以及敏感本地 资源的访问代理。Chromium 将其称为 Browser process。WebKit 将其称为 UI process。Firefox 将其称为 Parent process [chromium-multiprocess-architecture] [webkit2-architecture-overview] [firefox-process-model]。
在本地浏览器架构中,应将此组件视为主要信任锚。它通常是 浏览器管理策略被执行的位置,也是用户可见调解通常发生的位置。对于威胁 建模而言,这很重要,因为一个决策的安全影响部分取决于它 在哪里作出。在特权浏览器组件中执行的检查,并不等同于在 沙盒化内容进程中执行的检查。
在 Web 浏览器威胁模型图中,该图将此进程称为 “Browser / UI / Parent Process”。
1.2.2. 沙盒化 Web 内容执行和渲染
Web 内容在诸如 Chromium Renderer processes、WebKit WebContent processes 和 Firefox Content processes 这样的进程中执行, 每类进程在管理不受信任输入方面具有不同角色 [chromium-multiprocess-architecture] [webkit2-architecture-overview] [firefox-process-model]。
这些类型的进程暴露于不受信任的 Web 内容。因此,它们被建模为执行 环境,预期会解析、解释并对不受信任的输入进行计算。它们的价值不在于 假设不可能被攻陷,而在于限制攻陷发生后的后果。这就是为什么 特权 Web 浏览器调解与 Web 内容执行之间的分离,是 Web 浏览器模型中的核心 信任边界之一。实现也可以使用基于源或站点的隔离 策略,使不相关的 Web 内容在正常使用期间或攻陷之后不能相互干扰,但 确切的隔离单元取决于浏览器 [chromium-process-model-site-isolation] [webkit-site-isolation-notes] [firefox-process-model]。
在 Web 浏览器威胁模型图中,该图将此进程称为 “Content / Renderer / WebContent Process”。
1.2.3. 网络和存储
现代 Web 浏览器还会分离,或至少调解,联网和持久状态管理。在
Chromium 中,此角色与 Network Service、每个配置文件的
NetworkContext 对象以及 StoragePartition 相关联。在 WebKit 中,
Networking
process 处理网络访问、磁盘缓存,以及浏览器管理的结构化站点数据,例如
Web Storage 和 IndexedDB。在 Firefox 中,联网和持久状态的分布方式不同,但
二者之间仍然存在区别 [chromium-process-model-site-isolation] [webkit-storage-documentation] [firefox-process-model]。
这一层很重要,因为它通常是 Cookie、缓存、分区状态和站点数据 边界被执行的位置:如果某项规范影响获取、凭据、存储访问或响应 处理,它很可能会与这一层交互。
在 Web 浏览器威胁模型图中,该图分别将这些称为 “Network / Socket / Networking Process” 和 “Data Store”。
1.2.4. 图形、媒体和辅助程序
现代 Web 浏览器还会将 GPU、编解码器和其他辅助功能分离到单独进程中,这也 是因为媒体库是常见攻击面。Chromium 分离了 GPU process 和 额外的辅助进程族。Firefox 分离了 GPU Process、RDD Process、GMP Process、Utility Process 和 Network (Socket) Process。WebKit 也为相关功能分离进程 [inside-browser-part-1] [firefox-gecko-processes] [webkit2-architecture-overview]。
从威胁建模角度看,这些辅助进程很重要,因为它们位于 不受信任内容与复杂实现表面之间的边界上。这也是一种通用实现 模式:将不受信任的执行或容易崩溃的功能从特权控制路径中分离 出来,以降低故障发生时的影响。
在 Web 浏览器威胁模型图中,该图将此进程称为 “GPU / Compositor / Media helper Process”。
1.2.5. 元素词典
1.2.5.1. 外部实体
| ID | 名称 | 类型 | 描述 |
|---|---|---|---|
| E1 | 用户 | 外部实体 | 与浏览器 UI、提示、标签页和渲染内容交互的人类操作者。 |
| E2 | 远程 Web 源 | 外部实体 | 提供 HTML、CSS、JS、媒体、API、身份端点和其他 Web 资源的远程服务器。 |
| E3 | 底层网络基础设施 | 外部实体 | 物理基础设施、网络协议、网络分段、Localhost。 |
| E4 | 操作系统 | 外部实体 | 浏览器产品边界之外的文件系统、剪贴板、摄像头、麦克风、GPU 驱动程序、 媒体编解码器和相关平台服务。 |
1.2.5.2. 威胁边界
| ID | 名称 | 类型 | 描述 |
|---|---|---|---|
| B1 | Web 浏览器边界 | 威胁边界 | 将浏览器控制的元素与外部实体和服务分隔开来。 |
| B1.1 | 特权浏览器进程边界 | 威胁边界 | 将特权浏览器调解与沙盒化内容执行分隔开来。 |
| B1.2 | 沙盒化内容执行和渲染边界 | 威胁边界 | 将在降低权限和隔离约束下负责执行 Web 内容的元素 彼此分隔开来。 |
| B1.3 | Web 内容执行进程边界 | 威胁边界 | 将负责执行 Web 内容的进程分隔开来。 |
| B1.4 | 辅助服务边界 | 威胁边界 | 将具有联网、GPU、媒体或相关实用功能等辅助角色的元素 与浏览器架构的其余部分分隔开来。 |
| B1.5 | 配置文件和策略状态边界 | 威胁边界 | 将浏览器管理的配置文件、会话、设置和权限元数据与浏览器架构的其余部分 分隔开来。 |
| B1.6 | 站点状态边界 | 威胁边界 | 将浏览器管理的 Cookie、HTTP 缓存、Web 存储、IndexedDB 和相关站点数据 与浏览器架构的其余部分分隔开来。 |
| B1.7 | 沙盒化特权内容执行边界 | 威胁边界 | 将用于内部页面或扩展的沙盒化特权执行上下文与浏览器架构的其余 部分分隔开来。 |
| B1.8 | 本地网络边界 | 威胁边界 | 将用户的设备与公共互联网分隔开来。 |
| B1.9 | Web 边界 | 威胁边界 | 将用户代理与不受信任的 Web 资源分隔开来。 |
| B1.10 | Web 源边界 | 威胁边界 | 将各个 Web 源彼此分隔开来。 |
1.2.5.3. 进程
| ID | 名称 | 类型 | 描述 |
|---|---|---|---|
| P1 | Browser / UI / Parent | 进程 | Chromium Browser process、WebKit UI process、Firefox Parent process。协调特权 浏览器 UI、导航、窗口管理、进程选择、策略执行、权限 调解、联网访问,以及对敏感本地资源的代理访问,例如配置文件数据、 Cookie 和密码数据库,以及操作系统能力。 |
| P2 | Content / Renderer / WebContent | 进程 | Chromium Renderer、WebKit WebContent、Firefox Content 进程族。解析并渲染 HTML、CSS、字体、图像、媒体、XML、SVG 和纯文本等 Web 格式;运行 DOM、脚本、worker 和 JavaScript 引擎;并在沙盒化 以及源或站点隔离约束下向 Web 内容公开受约束的 Web API 入口点。 |
| P3 | Network / Socket / Networking | 进程 | 网络调解角色。在 Chromium 中,这与 Network Service 模式相对应;在 WebKit 中与 Networking process 相对应;在 Firefox 中与 Socket process 和相关的浏览器控制 联网职责相对应。处理浏览器调解的 HTTP(S)、套接字、与缓存相关的网络 访问,以及从任意互联网位置请求资源。 |
| P4 | GPU / compositor / media helper(s) | 进程 | GPU、合成器、编解码器、媒体以及其他在被分离时的辅助功能。将渲染 内容转换为呈现输出,并隔离处理不受信任或攻击者控制输入的复杂图形或媒体实现表面。 |
| P5 | 特权扩展 / 内部内容 | 进程 | 用于内部页面或扩展的可选浏览器管理特权执行上下文。涵盖 可添加功能、与浏览器或 Web 内容交互,并且可能根据安装和 用户或浏览器配置获得提升权限或源范围权限的浏览器扩展和内部内容。 |
1.2.5.4. 数据存储
| ID | 名称 | 类型 | 描述 |
|---|---|---|---|
| S1 | 配置文件 / 会话 / 策略存储 | 数据存储 | 偏好设置、配置文件数据、浏览历史、会话恢复状态、已保存凭据或 密码数据库引用,以及由浏览器控制生命周期和访问规则的浏览器管理配置。 |
| S2 | 权限 / 浏览器元数据 | 数据存储 | 站点设置、授权、扩展权限,以及浏览器控制的权限元数据,用于 决定 Web 内容或浏览器管理的特权内容何时可以激活强大功能或 访问敏感能力。 |
| S3 | Cookie + HTTP 缓存 | 数据存储 | 浏览器管理的 Cookie jar 和缓存响应。Cookie 会随适用的 HTTP 请求发送, 用于支持会话、个性化和状态管理,并且可由源、站点、 配置文件或分区规则限定范围。 |
| S4 | Web 存储 / IndexedDB / service-worker 数据 | 数据存储 | 持久和会话范围的站点数据,通常按源或分区限定范围,包括 localStorage、sessionStorage、IndexedDB、service-worker 数据,以及具有不同生命周期和容量属性的相关浏览器管理 存储机制。 |
1.2.5.5. 流
| ID | 名称 | 类型 | 描述 |
|---|---|---|---|
| F1 | 用户交互 | 流 | 用户与特权浏览器 UI 之间的输入和输出。 |
| F2 | 导航 / 框架控制 / IPC | 流 | 特权浏览器逻辑与内容执行之间的控制流。 |
| F3 | 子资源获取 / 网络调解 | 流 | 由内容触发、通向浏览器控制联网的访问路径。 |
| F4 | HTTPS / DNS / 远程数据 | 流 | 与远程源交换请求和响应。 |
| F5 | 显示 / 媒体 / 合成 | 流 | 通向图形和媒体辅助程序的渲染与呈现路径。 |
| F6 | 配置文件/会话读取和写入 | 流 | 通向配置文件范围浏览器状态的特权访问路径。 |
| F7 | 权限 / 浏览器策略 | 流 | 浏览器管理的权限和策略的评估与执行路径。 |
| F8 | Cookie / 缓存调解 | 流 | 通向浏览器管理的 Cookie 和缓存状态的访问路径。 |
| F9 | Web 存储路径 | 流 | 通向浏览器管理的持久站点存储的访问路径。 |
| F10 | 代理式 OS 访问 | 流 | 从浏览器控制的组件到操作系统或设备服务的调解访问。 |
该表示法遵循 W3C 威胁建模指南:E 表示外部实体, P 表示进程,F 表示流,S 表示数据存储, C 表示威胁容器,B 表示威胁边界 [threat-modeling-guide]。
1.3. 假设和外部依赖
系统模型依赖若干外部系统、服务和职责,它们不在浏览器的直接 控制之下,但会影响浏览器的安全态势:
-
操作系统(OS):浏览器以 OS 授予的权限运行, 相当于用户权限。浏览器安全目标必须在标签页、 网站和 OS 之间正确体现。与浏览器相比,OS 对直接网络连接提供更高层级的安全性。
-
网络/互联网:浏览器的主要功能涉及从 互联网上任意位置请求指令和内容。这依赖于底层网络 协议,例如浏览器大概信任的 TCP/IP。互联网的去中心化性质 意味着未加密数据很可能正被某些人读取。
-
Web 服务器及其后端:这些是浏览器内容、 指令(脚本、HTML)和资源的主要来源。浏览器必须让出控制权并 执行服务器提供的命令。Web 服务器也可能降低浏览器的安全性。网站 与数据库、站外存储和企业数据中心交互。数据在 浏览器上下文与这些后端系统之间流动。
-
第三方/其他源:现代 Web 应用通常包含来自其他源的资源和 脚本,这些也必须被执行。网站可能依赖第三方提供 广告、分析或认证数据库。
-
原生应用:安装在用户系统上的其他应用程序 可能直接访问浏览器资产(例如通过文件系统或内存检查)。
-
密码学:加密协议的使用以及与其交互,虽然不是 特定输入,但属于需要考虑的一类威胁,尤其是在当前 与向后量子密码学过渡有关的历史时刻。
-
外部组件/系统:对组件或系统的任何外部依赖都可能 影响浏览器的安全性。
1.4. 入口点和攻击面
入口点是结合系统模型中的流和边界来理解的。它们是 对手能够与系统交互或向系统提供数据的接口或机制。对于 Web 浏览器,这些包括:
-
浏览器 UI:用户界面本身,用户输入在此提供。它还包括 可信 UI。
-
网络接口:浏览器用于通过网络通信的端口和协议 (例如套接字、RPC、HTTP/HTTPS 端口)。
-
Web 内容(HTML、CSS、字体、脚本、媒体):从 Web 服务器交付的恶意代码、 脚本或内容。当呈现脚本时,浏览器会运行来自不受信任来源的代码。 对手可以诱使浏览器渲染恶意内容。具体威胁 与具体文件格式相关。
-
用户输入字段:用户可以输入数据的任何区域,这些区域可能被恶意 操纵(例如表单、URL)。
-
浏览器扩展:浏览器公开接口,供扩展与 浏览器和 Web 内容交互。
-
Web API:浏览器公开的标准 Web API 以及潜在的新型、有趣 API。
-
底层平台:允许源向底层 平台发送数据的功能。
1.5. 安全属性、资产和不变式
在考虑 Web 浏览器威胁模型时,需要保护的安全相关状态、资源和属性 多样且对用户安全和隐私至关重要:
-
用户数据:一般用户数据、敏感数据和个人身份 信息。
-
用户数据隐私:用户控制并保护其私人 信息和活动免受监视、关联和识别的能力。这包括 避免在缺乏透明度或控制的情况下,在浏览会话内及跨浏览会话进行识别或关联。
-
用户凭据:登录信息、用户名和密码。
-
用户 Cookie 和会话信息:存储在 Cookie、会话 ID 和 会话状态中的数据。这些可用于跨访问识别用户。
-
用户设备/计算机:用户的机器及其资源,包括用户文件系统的 机密性和完整性。
-
本地存储:由浏览器本地存储的数据,包括 Cookie、localStorage、 indexedDB、缓存、历史记录和密码。
-
用户浏览历史:有关访问过的站点的信息。
-
用户环境信息:操作系统配置、浏览器配置、 硬件能力。
-
用户活动和兴趣:购买偏好、个人特征和 以往活动。
-
受保护资源:用户可以访问但不应被 对手访问的任何资源。
-
私有网络资源:这些是浏览器 可以在没有用户明确请求的情况下访问的不同网络资源。
-
凭据和加密密钥:浏览器管理用于 加密和签名的公钥和私钥。
-
网站上的机密信息:在网站上显示或可访问的数据。
以下属性和不变式用作威胁分析的提示:
-
彼此不信任的源保持隔离,除非平台定义了明确且受控的 通信路径。
-
Web 内容不能直接行使操作系统权限,除非通过浏览器调解的 能力。
-
浏览器调解的权限通过浏览器控制的用户调解、策略或 配置授予。
-
浏览器管理的状态按照相关的源、站点、配置文件、分区或 权限边界限定范围。
-
在需要浏览器调解的场景中,不应仅从 Web 控制的 UI 推断 安全敏感的用户意图。
-
网络、存储、渲染和操作系统访问路径保持系统模型中所示的 边界。
2. 可能出什么问题?
2.1. 威胁分析方法
此威胁模型通过迭代系统模型中的层、元素、流、存储和 边界来分析 Web 平台。对于模型中的每个相关部分,分析会询问预期应保持什么属性、 什么可能违反该属性、谁可能受到影响,以及可能造成什么危害。威胁 来源和高层威胁族被用作提示,但分析建立在上述模型之上。
2.2. 威胁来源
-
浏览器扩展:尽管浏览器扩展具有实用性,但会引入大量安全漏洞。 恶意行为者会利用它们进行复杂攻击,例如钓鱼、 键盘记录、间谍活动、数据盗窃和会话劫持。它们需要被安装和配置为 拥有访问特定源的权限,这增加了攻击的复杂性。
-
应用程序/网站:网站可能被攻陷并变得恶意。不同攻击 可以指向同一网站上用户会话的攻陷(例如窃取 Cookie,或 生成任意请求——跨站请求伪造(CSRF)、UI 伪装/点击劫持), 绕过同源并从不同网站获取信息(即 Cross-Site Leaks - XS Leaks),或攻陷浏览器本身(例如在浏览器 进程中运行任意代码,以获得浏览器内数据的控制权,或攻陷用户设备)。 对手会利用现有浏览器功能。
2.3. 高层威胁索引
这是 Web 平台威胁模型中显著威胁族的索引,而非穷尽列表。
-
跟踪/隐私丧失:指纹识别是在用户不知情或未同意的情况下 识别用户的方法。指纹识别同时涉及隐私和安全问题,具有 双重意义。一方面,对手可以用它唯一识别用户(通常与隐私相关的 场景),也就是说,允许各方在不同站点之间建立用户画像或历史, 往往没有用户知情或同意。另一方面,它可用于 识别设备类型(通常与安全相关的场景,例如随后 攻陷设备)。规范暴露的数据,尤其是关于 底层平台或持久状态的信息,可能有助于指纹识别。某些 API 可能增加 指纹识别表面。
3. 我们要如何应对?
3.1. 安全功能和控制措施
Web 浏览器采用多种安全功能和保护机制,有助于保持 前面确定的属性和不变式:
-
沙盒化:沙盒化是限制渲染引擎等组件的关键机制, 用于限制它们访问操作系统和用户文件。它充当 OS 权限与子进程权限之间的屏障。
-
同源策略(SOP):一种基础安全控制,用于限制 从一个源加载的文档或脚本如何与另一个源的资源交互。
-
内容安全策略(CSP):一种安全标准,通过指定哪些动态资源可以加载, 来防止 XSS、点击劫持和其他代码注入攻击。
-
HTTPS/SSL/TLS:用于浏览器与 Web 服务器之间安全加密通信的协议,确保传输中数据的完整性和机密性。 HTTP 严格传输安全(HSTS)与此相关。
-
输入验证和输出编码:这些是处理 用户提供数据以防止 XSS 等注入攻击的关键实践。
-
安全头:HTTP 头指示浏览器如何安全地处理内容。
-
反钓鱼和反恶意软件:Safe Browsing 等功能会警告用户 恶意网站。
-
混合内容处理:浏览器如何处理加载 不安全(HTTP)资源的安全(HTTPS)页面。
-
渲染器隔离:将渲染引擎等复杂且易出错的组件 放入与浏览器内核分离的沙盒化进程或保护域中的架构。 浏览器内核处理敏感的 OS、网络和存储交互。
-
进程间通信(IPC):隔离的浏览器组件之间 (例如内核和渲染器)的安全通信通道。
-
下载管理器:处理文件下载的组件,可能包括安全 检查。
-
数据最小化和隐私设置:用于 减少潜在可识别信息暴露的设计原则和配置。
-
可信 UI:确保敏感用户交互发生在 Web 内容无法轻易仿冒或操纵的浏览器界面中。
-
权限 API:在激活强大 功能之前请求明确的用户许可。
-
瞬态激活:它是一道门控,是一种窗口状态,表示用户 最近按下了按钮、移动了鼠标、使用了菜单,或执行了其他用户交互。 有时用作一种机制,以确保某个 Web API 只有在由用户 交互触发时才能运行。例如,脚本不能任意启动需要瞬态 激活的弹出窗口——它必须从 UI 元素的事件处理器触发。
4. 我们做得足够好吗?
5. 致谢
多位个人为本文档作出了贡献。编辑们尤其感谢 Anna Weine。