編集

Chrome 136 リリース

Chrome 136 がリリース。RegExp.escape静的メソッドのベースライン入りや:visitedリンク履歴のパーティショニングなど。

#RegExp.escape がベースライン入り

RegExp.escape静的メソッドが全ブラウザで利用可能に。正規表現用のエスケープ処理が簡単にできる。渡された文字列を正規表現で利用するようなケースでは、そのまま RegExp などに渡すと危険なため対処が必要だったが、これによりモダンな環境では Web 標準の API のみで対処が可能になった。

js
const unsafe = "a+b*c?";
const safe = RegExp.escape(unsafe);
const regex = new RegExp(safe); // /a\+b\*c\?/

# リンク履歴のパーティショニング

:visited疑似クラスの履歴がサイト・フレーム単位で分離され、サイドチャネル攻撃による履歴漏洩が防止される。Chrome 136 以降、:visited履歴はグローバルなリストではなく、リンク URL・トップレベルサイト・フレームオリジンごとに分割管理される。これにより、他サイトやサードパーティ iframe からの履歴推測が不可能になった。

同一サイト内のサブページへのリンク(セルフリンク)は:visitedとして表示されるため、通常のナビゲーション体験は維持される。

css
a:visited {
  color: purple;
}

参考:Chrome の のプライバシー保護を強化

#パスワード認証情報のパスキーアップグレード

WebAuthn の条件付き作成リクエストで、既存のパスワード認証情報をパスキーにアップグレード可能。ユーザーの同意があればモーダルなしで自動作成できる。

js
const registration = await navigator.credentials.create({
  mediation: 'conditional',
  publicKey: {
    challenge: /*...*/,
    user: /*...*/,
    rp: /*...*/,
  }
});

#HDR 最大輝度の制限

dynamic-range-limit プロパティで HDR コンテンツの最大輝度を制限可能。

css
/* HDR最大輝度の制限 */
body {
  dynamic-range-limit: 1000;
}

#参考文献

編集