どのように機能するか
URL正規化は、受信したURL内の区切り文字、エンコードされた要素、およびリテラルバイトを修正し、一貫したフォーマット標準に準拠させます。
例えば、www.example.com/helloに一致するURLを持つリクエストをブロックするWAFカスタムルールを考えてみましょう。このルールは、エンコードされた要素を含むリクエスト — www.example.com/%68elloをブロックしません。Cloudflareのグローバルネットワーク上で受信したURLを正規化することで、URLを含むルールの表現を簡素化するのに役立ちます。
利用可能な2種類のURL正規化は次のとおりです:
URL正規化が行われる場所は、設定された設定に依存します。
異なる設定の例とそれがリクエストURLに与える影響については、URL正規化の例を参照してください。
RFC 3986 ↗に従って行われるURL正規化は次のとおりです:
- 次の予約されていない文字はパーセントデコード ↗されます:
- アルファベット文字:
a-z,A-Z(%41-%5Aおよび%61-%7Aからデコード) - 数字文字:
0-9(%30-%39からデコード) - ハイフン
-(%2D)、ピリオド.(%2E)、アンダースコア_(%5F)、およびチルダ~(%7E)
- アルファベット文字:
- これらの予約文字はエンコードまたはデコードされません:
: / ? # [ ] @ ! $ & ' ( ) * + , ; = - リテラルバイト値などの他の文字はパーセントエンコードされます。
- パーセントエンコードされた表現は大文字に変換されます。
- URLパスはドットセグメントの削除 ↗プロトコルに従って正規化されます。
CloudflareのURL正規化を使用する場合、受信リクエストのURLに対して以下の順序で追加の正規化技術が適用されます:
- バックスラッシュ(
\)をスラッシュ(/)に正規化します。 - 連続するスラッシュをマージします(例えば、
//は/に正規化されます)。 - 結果のURLに対してRFC 3986正規化を実行します。