FirefoxとChromeのバージョンが初の3ケタ「100」になるとユーザーエージェント文字列が原因で一部のサイトが破損する可能性があるとの警告

GIGAZINE



2022年2月時点でのFirefoxGoogle Chromeの最新バージョンはどちらも「97」となっており、2022年の5月にはどちらもバージョン番号が大台の「100」に到達します。これに伴い、ブラウザがどのバージョンのものかを特定しようとするウェブサイトが破損する可能性があると、両ブラウザの開発者が警告しています。

Version 100 in Chrome and Firefox – Mozilla Hacks – the Web developer blog
https://hacks.mozilla.org/2022/02/version-100-in-chrome-and-firefox/

Chrome and Firefox soon to reach major version 100
https://web.dev/chrome-firefox-100/

Firefox and @GoogleChrome will reach version 100 in a couple of months. This has potential to cause breakage on sites that rely on identifying the browser version.

This post covers the strategies that Chrome and Firefox are taking to mitigate the impact.https://t.co/qBUSQCump2

— Mozilla Developer ????????‍???? (@mozhacks)

Major milestone: Chrome and Firefox will soon reach version 100! ????

The version number is going up to three digits and both browsers are working on mitigating the potential impact of this change. Learn more about it and pitch in to help with testing ➡️https://t.co/FtPl4CRjfk

— Chrome Developers (@ChromiumDev)


通常、ウェブサイトはブラウザごとに異なるコンテンツを表示するようなことはありません。そのため、ユーザーが「どのブラウザを使用しているか」を特定する必要はないように思えます。しかし、ウェブの「標準」は完璧なものではないため、「ユーザーがどのブラウザを使用しているか」を判定しなければいけないケースもまれにあるそうです。そういった場合に使用されるのが、ユーザーエージェント文字列で、ブラウザの種類やバージョン情報を特定することが可能となります。

ブラウザはHTTPヘッダーにユーザーエージェント文字列を送信するため、サーバーはブラウザを識別できるようになるわけですが、このユーザーエージェント文字列には「Navigator.userAgent」のようなJavaScriptを使ってアクセスすることも可能です。


しかし、FirefoxとChromeはどちらもメジャーバージョンが「100」の大台に到達しようとしています。バージョン100に到達すると、バージョン番号が2桁から3桁に変わるため、「Navigator.userAgent」などを使ってユーザーエージェント文字列の読み取りを行うウェブサイトが破損する可能性があるとのこと。これは、12年前にブラウザのメジャーバージョンが「10」に到達した際、バージョン番号が1桁から2桁に変わった際にも起きた問題だそうです。

問題は、ユーザーエージェント文字列には従うべき単一の仕様が存在しないという点。標準仕様が存在しないため、ブラウザごとにユーザーエージェント文字列の形式は異なるものとなっており、ウェブサイト側もそれぞれ異なる固有のユーザーエージェント解析を行っています。Chromeの開発チームは「一部のユーザーエージェント解析ライブラリには、3桁のバージョン番号を考慮していないままの、バグが残ったものを利用している可能性があります」と指摘。なお、開発チームによるとほとんどのユーザーエージェント解析ライブラリはブラウザのバージョン番号が1桁から2桁に増えた時に、3桁のバージョン番号にも対応できるように解析ロジックを改善したため、問題が発生することはないと予想しています。

なお、FirefoxとChromeはどちらもメジャーバージョンが「100」に到達することに備えて、ユーザーエージェント文字列として3桁の数字を出力すると何が起きるかを確かめる実験を繰り返してきました。これによりいくつかの問題が報告されていますが、それらのほとんどはすでに修正されています。


それでもバージョン番号「100」のリリースに備え、ChromeとFirefoxは両方が緩和策を講じています。Chromeではバージョン「100」以降についてはメジャーバージョンを「99」で固定し、ユーザーエージェント文字列のマイナーバージョン部分でメジャーバージョンの番号を報告するという措置が講じられており、専用コードはすでに完成しています。例えば、Chromeではバージョン「101」を示すユーザーエージェント文字列が「99.101.4988.0」と表示されるわけです。なお、Chrome開発チームはマイナーバージョン部分で3桁の数字を記すことに問題がないかについても調査しており、問題の数と重要度に応じてこのプランを実行するか否か決定する予定。

一方、FirefoxにはCompatibility/Interventions Releasesというルールが存在しているため、Firefoxはこれに従ってホットフィックスすることが可能です。FirefoxのURLバーに「about:compat」と入力すると、現在修正されている内容を確認することができます。

バージョン「100」以降を利用している際にウェブサイトが破損して閲覧できなくなった場合は、代わりにユーザーエージェント文字列としてバージョン「99」のものを送信することで問題に対応する予定とのこと。なお、ウェブサイトの破損が想定以上におよぶ場合は、メジャーバージョン番号の送信を凍結する可能性もあるとのこと。また、Firefoxでもバージョン番号をマイナーバージョン番号として送信したり、他のパラメーターを介して実際のバージョン番号を送信したりすることが想定されています。


ただし、ユーザーエージェント文字列に複雑さを加える可能性のある戦略については「エコシステムに強い影響をおよぼす可能性がある」として、風変わりな対策を避けるべく対策が練られています。

この記事のタイトルとURLをコピーする

Source