据BleepingComputer消息,Mozilla向网站开发人员发出警告,即将推出的 Firefox 100和 Chrome 100版本浏览器存在严重风险,在解析包含三位数版本号的用户代理字符串时可能会破坏网站。
当你浏览一个网页时,你的浏览器会向你所访问的网站的服务器发送用户代理字符串。该字符串会表明你使用的是哪种浏览器,它的版本号,还有你的系统的细节,比如是什么操作系统及它的版本。这样浏览器就会利用这些信息提供符合你的浏览器的特定内容。
例如,Mozilla Firefox97版本的当前用户代理字符串是:
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:97.0) Gecko/20100101 Firefox/97.0
当前版本的 Google Chrome 98,用户代理字符串是:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36
Mozilla发现100版本的用户代理字符串存在风险
2021年8月,Mozilla启动了一项实验,以查看三位数的“Firefox/100”用户代理字符串是否会导致网站出现问题。随即,谷歌很快跟进了他们自己的 Chrome 100版本的实验。
在这两个实验中,Mozilla 和 Google 发现少数网站在解析包含三位数版本号的用户代理字符串时无法正常运行。
从那时起,Mozilla就一直在跟踪由100版本所引起的网络错误,并在HBO Go、Bethesda、 Yahoo、Slack和Duda 网站构建器创建的网站上发现了问题。在大多数情况下,这些问题的范围从网站声明不支持浏览器到影响网站部分的用户界面问题。
Mozilla在更改用户代理字符串的文章中解释道,如果没有遵循单一规范,不同的浏览器对User-Agent字符串和特定于站点的User-Agent解析有不同的格式。某些解析库可能有硬编码的假设或没有考虑到的错误三位数的主要版本号。
而当浏览器迁移到两位数版本号时,许多库改进了解析逻辑,因此预计达到三位数是出现的问题将大大减少。
接下来,Mozilla 和 Google 将继续为100版的用户代理进行相关的实验,直到 Chrome 浏览器和Firefox浏览器正式发布。倘若在100版本发布之前尚未完成问题修复工作,届时Mozilla或Google将准备其他的计划,确保网站不受影响。
针对Firefox,Mozilla有一个站点干预机制来冻结 Firefox/99 的用户代理或注入CSS 或其他覆盖来修复错误。
同样,Chrome 计划将用户代理字符串中显示的版本冻结为99,并在用户代理字符串的另一部分报告实际版本。
至于网站开发人员和管理员,Mozilla 要求他们测试更改为Firefox 100和Chrome 100的用户代理,查看是否会破坏他们的网站