在几乎每个版本的 Chrome 中,我们都会对该产品及其性能以及 Web 平台的功能进行大量更新和改进。本文介绍了 Chrome 56 中已废弃和移除的功能。Chrome 56 自 12 月 8 日起处于 Beta 版阶段。此列表随时都可能发生变化。
移除对 SHA-1 证书的支持
SHA-1 加密哈希算法首次出现弱点迹象是在 11 年前,而近期的研究表明,可能很快就会出现攻击,这些攻击会直接影响 Web 公钥基础架构 (PKI) 的完整性。
为保护用户免受此类攻击,自 Chrome 56(稳定版于 2017 年 1 月发布)起,Chrome 不再支持 SHA-1 证书。使用此类证书访问网站会导致系统显示插页式警告。如需了解详情,请访问 Chrome 安全博客。
移除意图 | Chromestatus 跟踪器 | Chromium bug
移除了 TLS 中的 CBC 模式 ECDSA 加密方式
TLS 的 CBC 模式构建存在缺陷,使其易受攻击且很难安全地实现。虽然 CBC 模式加密算法仍广泛用于 RSA,但在 ECDSA 中几乎不存在。其他浏览器仍支持这些加密算法,因此我们认为风险较低。此外,只有少数组织在 TLS 中使用 ECDSA,而且设置通常较为复杂(一些较旧的客户端仅支持 RSA),因此我们希望 ECDSA 网站得到更好的维护,并在发生问题时响应速度更快。
TLS 1.2 添加了基于 AEAD 的新加密方式,这些加密方式可避免这些问题,具体包括 AES_128_GCM、AES_256_GCM 或 CHACHA20_POLY1305。虽然目前我们仅要求基于 ECDSA 的网站执行此操作,但我们建议所有管理员都执行此操作。基于 AEAD 的加密方式不仅可以提高安全性,还可以提高性能。AES-GCM 在近期的 CPU 上具有硬件支持,ChaCha20-Poly1305 支持快速软件实现。同时,使用 CBC 加密方式时,需要对每条传出记录执行缓慢且复杂的缓解措施和 PRNG 访问。基于 AEAD 的加密算法也是实现 HTTP/2 和 False Start 优化的前提条件。
意图移除 | Chrome 状态跟踪器 | Chromium bug
从轻触滚动中移除用户手势
我们发现了多个示例,其中编写不当或恶意的广告会在 touchstart
或所有 touchend
事件上触发触摸滚动导航。如果“滚轮”事件无法打开弹出式窗口,那么触摸滚动也不应打开弹出式窗口。这可能会破坏某些场景,例如,媒体在触摸时无法播放,或弹出式窗口在触摸时无法打开。在所有这些情况下,Safari 都已静默地无法打开弹出式窗口。
移除意图 | Chromestatus 跟踪器 | Chromium bug
禁止提取具有无效类型/语言属性的脚本
目前,无论 type
或 language
属性的值如何,Chrome 的预加载扫描器都会提取 <scripts>
元素中的项,但在解析时不会执行脚本。废弃提取功能后,预加载扫描器和解析器将具有相同的语义,并且我们不会为不会使用的脚本发起提取。这旨在为访问包含大量经过后处理的自定义脚本代码(例如 type="text/template"
)的网站的用户节省数据。
sendBeacon API 充分涵盖了使用无效脚本对服务器进行 ping 的用例。
此更改使 Chrome 与 Safari 保持一致,但 Firefox 仍会请求脚本,无论类型或语言如何。
移除意图 | Chromestatus 跟踪器 | Chromium bug
移除了 MediaStreamTrack.getSources()
此方法已不再包含在规范中,并且任何其他主要浏览器都不支持此方法。它已被 MediaDevices.enumerateDevices()
取代,自 47 版起,Blink 无需标志即可支持 MediaDevices.enumerateDevices()
,其他浏览器也支持 MediaDevices.enumerateDevices()
。相关示例如下所示。这个假设的 getCameras()
函数首先使用特征检测来查找和使用 enumerateDevices()
。如果特征检测失败,它会在 MediaStreamTrack
中查找 getSources()
。最后,如果不支持任何类型的 API,则返回空的 cameras
数组。
function getCameras(camerasCallback) {
var cameras = [];
if('enumerateDevices' in navigator.mediaDevices) {
navigator.mediaDevices.enumerateDevices()
.then(function(sources) {
return sources.filter(function(source) {
return source.kind == 'videoinput'
});
})
.then(function(sources) {
sources.forEach(function(source) {
if(source.label.indexOf('facing back') >= 0) {
// move front facing to the front.
cameras.unshift(source);
}
else {
cameras.push(source);
}
});
camerasCallback(cameras);
});
}
else if('getSources' in MediaStreamTrack) {
MediaStreamTrack.getSources(function(sources) {
for(var i = 0; i < sources.length; i++) {
var source = sources[i];
if(source.kind === 'video') {
if(source.facing === 'environment') {
// cameras facing the environment are pushed to the front of the page
cameras.unshift(source);
}
else {
cameras.push(source);
}
}
}
camerasCallback(cameras);
});
}
else {
// We can't pick the correct camera because the API doesn't support it.
camerasCallback(cameras);
}
};
意图移除 | Chrome 状态跟踪器 | Chromium bug
移除 Firestore-xss CSP 指令
内容安全政策级别 2 规范的早期草稿包含一个 reflected-xss
指令,除了语法不同之外,它提供的功能与 X-XSS-Protection
标头完全相同。此指令已于 2015 年从规范中移除,但在移除之前已在 Chrome 中实现。我们现在将移除对此指令的支持。
移除意图 | Chromestatus 跟踪器 | Chromium bug
替换 CSP“referrer”指令
CSP referrer
指令允许网站所有者通过 HTTP 标头设置引荐来源网址政策。此功能不仅使用率极低,而且不再属于任何 W3C 规范。
仍需要此功能的网站应使用 <meta name="referrer">
或新的 Referrer-Policy 标头。
移除意图 | Chromestatus 跟踪器 | Chromium bug
移除了 PaymentAddress.careOf 字段
PaymentAddress
接口有一个非标准的 careOf
字段(没有任何知名地址标准支持该字段)。careOf
字段也是不必要的,收件人和组织字段足以支持所有必要的用例。添加 careOf
会在与现有邮政地址架构和 API 的互操作性方面造成严重问题。如需更详细的讨论,请参阅 GitHub 上的规范移除提案。
移除了 SVGViewElement.viewTarget
SVGViewElement.viewTarget
属性不属于 SVG2.0 规范,并且用量很少或不存在。此属性已在 Chrome 54 中废弃,现已移除。