谷歌最新的 Chrome 浏览器, 105版, 已经过时了,尽管根据您使用的是 Windows、Mac 还是 Linux,完整版本号会令人讨厌地不同。
在类 Unix 系统(Mac 和 Linux)上,你想要 105.0.5195.52,但在 Windows 上,您正在寻找 105.0.5195.54.
根据谷歌的说法,这个新版本包括 24 个安全修复程序,尽管没有一个被报告为“in-the-wild”,这意味着这次没有任何零日补丁。
然而,有一个漏洞被称为 危急,以及另外八个评级 高.
在已修复的缺陷中,超过一半归咎于内存管理不善,其中九个被列为 释放后使用, 错误,四个作为 堆缓冲区溢出.
内存错误类型解释
A 释放后使用, 正是它所说的:您交还内存以将其释放给程序的另一部分,但无论如何继续使用它,因此可能会干扰您的应用程序的正确操作。
例如,想象一下,认为它现在可以单独访问有问题的内存块的程序部分接收到一些不受信任的输入,并仔细验证新数据是否可以安全使用……
…但是,在它开始使用经过验证的输入之前的那一刻,你的错误“释放后使用”代码会干扰,并将陈旧、不安全的数据注入内存的同一部分。
突然,程序中其他地方的无错误代码表现得好像它本身有错误,这要归功于代码中的缺陷使内存中的内容无效。
能够找到一种方法来操纵代码意外干预时间的攻击者不仅可以随意使程序崩溃,还可以从中夺取控制权,从而导致所谓的 远程代码执行.
和a 堆缓冲区溢出 指的是您将更多数据写入内存的错误,而不是最初分配给您的空间。 (堆 是当前由系统管理的内存块集合的行话。)
如果程序的其他部分有一个内存块恰好在堆中靠近或靠近您的内存块,那么您刚刚写出的多余数据不会无害地溢出到未使用的空间中。
相反,它会破坏其他地方正在使用的数据,这与我们刚刚描述的释放后使用错误的后果相似。
“消毒剂”系统
令人高兴的是,除了修复根本不应该存在的错误功能外,谷歌还宣布了一项新功能的到来 增加保护 针对一类被称为 跨站点脚本 (XSS)。
XSS 错误是由浏览器将不受信任的数据(例如来自远程用户提交的 Web 表单)直接插入当前网页而导致的,而没有首先检查(并删除)有风险的内容。
例如,想象一下,您有一个网页,可以向我展示我选择的文本字符串在您的时髦新字体中的外观。
如果我输入示例文本 Cwm fjord bank glyphs vext quiz
(如果您想知道,这是一种人为但含义模糊的英语和威尔士语混搭,其中包含所有 26 个字母表中的所有 26 个字母,以防您想知道),那么您可以安全地将确切的文本放入您创建的网页中。
例如,在 JavaScript 中,您可以像这样重写网页的正文,插入我提供的文本而无需任何修改:
文档.body.innerHTML = " Cwm 峡湾银行字形 vext 测验"
但如果我作弊,并要求你“显示”文本字符串 Cwm fjord<script>alert(42)</script>
相反,那你这样做就太鲁莽了……
文档.body.innerHTML = " 峡湾alert(42) "
…因为你会允许我注入不受信任的 JavaScript 代码 my 直接选择 选择您 网页,我的代码可以在其中读取您的 cookie 并访问否则会被禁止的数据。
所以,要制作所谓的 清理你的输入 更简单的是,Chrome 现在已经正式启用了对名为的新浏览器功能的支持 setHTML()
.
这可用于通过称为 Sanitizer
首先,如果您使用此代码...
文档.body.setHTML(" 峡湾alert(42) ")
…然后 Chrome 将首先扫描提议的新 HTML 字符串是否存在安全问题,并自动删除任何可能构成风险的文本。
您可以通过 开发者工具 通过运行上述 setHTML()
代码在 安慰 提示,然后检索注入到 document.body
变量,就像我们在这里所做的那样:
即使我们明确地放置了一个 <script>
在我们传递给 setHTML()
函数,脚本代码会自动从创建的输出中清除。
如果您确实需要将潜在危险的文本添加到 HTML 元素中,您可以添加第二个参数到 setHTML()
指定要阻止或允许的各种类型的风险内容的功能。
默认情况下,如果如上所述省略第二个参数,则 Sanitizer 会以其最高安全级别运行并自动清除它知道的所有危险内容。
怎么办呢?
- 如果您是 Chrome 用户。 通过单击检查您是否是最新的 三点 > 政策和帮助 > 关于谷歌Chrome浏览器,或通过浏览到特殊的 URL
chrome://settings/help
. - 如果你是一名网络程序员。 了解新的
Sanitizer
和setHTML()
通过阅读功能 来自谷歌的建议 和 MDN网络文档.
顺便说一句,如果您使用的是 Firefox, Sanitizer
可用,但默认情况下尚未打开。 你可以打开它来了解更多关于它的信息 about:config
并切换 dom.security.sanitizer.enabled
选项 true
.