URL比較のためのUnicode正規化

Unicode正規化がURLと国際化ドメイン名(IDN)にどう影響するかを理解します。比較前の正規化が重複検出の失敗を防ぐ理由を学びます。

Use Cases

詳細な説明

URLでの正規化

URLは2つの方法でUnicode文字を含むことができます:国際化ドメイン名(IDN)で直接、パスとクエリコンポーネントでパーセントエンコードされた形式です。

国際化ドメイン名(IDN)

IDN標準(IDNA2008)はPunycode変換前にNFC正規化を要求します。入力がNFC正規化されていない場合、同じ視覚的ドメインの異なるUnicode表現が異なるPunycode文字列を生成します。

パーセントエンコードされたパス

/caf%C3%A9    (NFC)
/cafe%CC%81   (NFD)

デコードすると同じに見えますが、異なるリソースを指す可能性のある異なるURLです。

セキュリティへの影響

攻撃者は異なる正規化形式を使用して、同じに見えるが異なるリソースを指すURLを作成し、フィッシング攻撃やキャッシュポイズニングを可能にします。

ユースケース

Webクローラー、URL重複排除システム、CDNキャッシュキー生成、等価なURLを検出する必要があるセキュリティツールにとって重要です。ユーザー提供のURLを処理する国際化Webアプリケーションにも重要です。

試してみる — Unicode Normalizer

フルツールを開く