保護テンプレートを設定する際は、保護対象に適用する必要があります。Web Application Firewall (WAF) は、追加された各アセットに対して自動的に保護対象を作成するため、通常は手動での設定は不要です。ただし、アセットの数が多い場合、保護ルールが複雑な場合、または特定のデコード、Cookie、カスタムレスポンスヘッダーなどの詳細設定が必要な場合は、保護対象または保護対象グループを手動で設定する必要があります。このトピックでは、きめ細かい効率的なセキュリティを実現するための設定方法と管理方法について説明します。
基本概念
-
保護対象: ドメイン名またはクラウドサービスインスタンスを WAF に追加すると、WAF は自動的にその保護対象を作成します。保護テンプレートを使用する際は、ターゲットとして保護対象を選択する必要があります。
-
保護対象グループ: 複数の保護対象を保護対象グループに追加して、集中管理できます。各保護対象は、1 つの保護対象グループにのみ所属できます。
前提条件
開始する前に、以下の要件が満たされていることを確認してください:
-
アセットの追加要件: ご利用の Web サービスを WAF に追加し、保護対象を作成しておく必要があります。サービスを追加していない場合は、「アセット追加の概要」をご参照ください。
-
ICP 登録: 中国本土のサーバーでホストされているドメイン名の保護対象を追加するには、そのドメイン名が ICP 登録を完了している必要があります。詳細については、「ドメイン名の ICP 登録情報を照会する方法」をご参照ください。
保護対象の追加
リソースを WAF に追加すると、WAF は自動的にその保護対象を作成します。通常、手動で追加する必要はありません。ただし、以下のシナリオでは、ドメイン名を保護対象として手動で追加する必要があります:
-
クラウドサービスのシナリオ: 複数のドメイン名が同じクラウドサービスインスタンスに解決され、各ドメイン名に異なる保護ルールを設定する必要がある場合。
-
ハイブリッドクラウド SDK 統合シナリオ: 複数のドメイン名が同じクラスターインスタンスに解決され、各ドメイン名に異なる保護ルールを設定する必要がある場合。
-
Web Application Firewall 3.0 コンソールにログインします。上部のメニューバーから、WAF インスタンスのリソースグループとリージョン (中国本土 または 中国本土以外) を選択します。
-
左側のナビゲーションウィンドウで、 を選択します。
-
保護対象 タブで、保護対象の追加 をクリックします。
-
保護対象の追加 ダイアログボックスで、保護対象タイプ に基づいてパラメーターを設定し、OK をクリックします。
クラウドサービス
パラメーター
説明
ドメイン名
保護したいドメイン名を入力します。完全一致ドメイン名 (例:
www.aliyundoc.com) またはワイルドカードドメイン名 (例:*.aliyundoc.com) を入力できます。-
ワイルドカードドメイン名のマッチングルール:
-
ワイルドカードは同じレベルのサブドメインにのみ一致します。たとえば、
*.aliyundoc.comはwww.aliyundoc.comとexample.aliyundoc.comには一致しますが、www.example.aliyundoc.comには一致しません。 -
ワイルドカードが
*.aliyundoc.comのようなセカンドレベルドメイン名に適用される場合、セカンドレベルドメイン名自体であるaliyundoc.comにも一致します。 -
ワイルドカードが
*.example.aliyundoc.comのようなサードレベルドメイン名に適用される場合、サードレベルドメイン名自体であるexample.aliyundoc.comには一致しません。
-
-
優先度ルール:リクエストが完全一致ドメイン名とワイルドカードドメイン名の両方に一致する場合、完全一致ドメイン名のルールが優先されます。
クラウドサービス
ドメイン名に関連付けられているクラウドサービスインスタンスのタイプを選択します。有効な値:
-
ALB: Application Load Balancer。
-
CLB4: TCP リスナーを持つ Classic Load Balancer。
-
CLB7: HTTP/HTTPS リスナーを持つ Classic Load Balancer。
-
ECS: Elastic Compute Service。
-
NLB: Network Load Balancer。
[instance]
ALB インスタンス ID を選択します。このパラメーターは、クラウドサービス を ALB に設定した場合にのみ必須です。
Add to Protected Object Group
保護ルールを集中管理するために、保護対象を保護対象グループに追加できます。
保護対象がグループに追加されると、保護ルールはグループに対してのみ設定でき、個々の保護対象には設定できなくなります。リソースグループ
リソース管理と権限設定を簡素化するために、保護対象をリソースグループに追加できます。特別な要件がない場合は、既定のリソース グループ を選択します。詳細については、「リソースグループとは」をご参照ください。
ハイブリッドクラウド SDK の統合
パラメーター
説明
保護対象名
識別しやすい名前を入力します。
ドメイン名 / IP
保護したいドメイン名を入力します。完全一致ドメイン名 (例:
www.aliyundoc.com) またはワイルドカードドメイン名 (例:*.aliyundoc.com) を入力できます。説明-
ワイルドカードドメイン名のマッチングルール: ワイルドカードドメイン名は、同じレベルのサブドメインにのみ一致します。たとえば、
*.aliyundoc.comはwww.aliyundoc.comとexample.aliyundoc.comには一致しますが、aliyundoc.comやwww.example.aliyundoc.comには一致しません。 -
優先度ルール: リクエストが完全一致ドメイン名とワイルドカードドメイン名の両方に一致する場合、完全一致ドメイン名の保護ルールが優先されます。
URL
保護したい URL パスを入力します。
Add to Protected Object Group
保護ルールを集中管理するために、保護対象を保護対象グループに追加できます。
保護対象がグループに追加されると、保護ルールはグループに対してのみ設定でき、個々の保護対象には設定できなくなります。リソースグループ
リソース管理と権限設定を簡素化するために、保護対象をリソースグループに追加できます。特別な要件がない場合は、既定のリソース グループ を選択します。詳細については、「リソースグループとは」をご参照ください。
-
詳細設定
WAF は、以下の高度な設定を提供します。ビジネス要件とセキュリティポリシーに基づいて保護対象の設定をカスタマイズするには、保護対象を見つけ、操作 列の 設定 をクリックします。
|
パラメーター |
説明 |
|
CDN などのレイヤー 7 プロキシが WAF の前にデプロイされている場合、クライアント IP の取得方法 を設定する必要があります。これにより、WAF はセキュリティ分析のために実際のクライアント IP アドレスを取得し、セキュリティレポート に Attacker IP Address を表示するなどの機能を利用できます。 |
|
|
CC 保護 や スキャン保護 などの保護モジュールを使用する場合、またはルールアクションを スライダー に設定する場合、WAF はレスポンスに追跡および検証 Cookie を追加します。セキュリティと互換性の要件を満たすために、Cookie の発行ステータスと Secure 属性を設定できます。 |
|
|
CNAME レコードモードで追加されたドメイン名の場合、セキュリティ強化、ポリシー制御、またはデバッグのためにクライアントレスポンスにカスタムヘッダーを追加できます。 |
|
|
WAF は JSON、XML、Form などの形式のデータを解析し、Base64 や HTML エンティティでエンコードされたデータをデコードできます。これにより、WAF は複数層のエンコーディングや圧縮によって隠された悪意のあるトラフィックを検出できます。 |
|
|
WAF は、リクエストからユーザー名、トークン、JWT ボディなどのユーザー ID 情報を抽出します。スキャン保護、ボット管理、カスタムルール などのモジュールは、この情報を使用して、きめ細かいアカウントレベルのセキュリティ制御を行います。 |
|
|
クライアントが JS 検証、スライダー、または トークンチャレンジ をパスすると、WAF はデフォルトで 1,800 秒 (30 分) 間、再度のチャレンジを要求せずに後続のリクエストを許可します。この有効期限は 5 秒から 1,800 秒の間で設定できます。この期間が過ぎると、クライアントは次のリクエストで再度チャレンジをパスする必要があります。 |
-
クライアント IP アドレスの設定
WAF リンク設定 タブで、WAF の前にレイヤー 7 プロキシがあるかどうか (Anti-DDoS Proxy や CDN など) パラメーターを設定します。詳細については、「実際のクライアント IP アドレスの取得」をご参照ください。
説明CNAME レコードモードで追加されたドメイン名、およびクラウドサービスとして追加された ECS、CLB、NLB インスタンスについては、アセット追加時にこの設定を完了している場合、再度設定する必要はありません。
-
Cookie の設定
WAF リンク設定 タブで、トレイル Cookie と スライダー Cookie を設定します。
-
トレイル Cookie HTTP フラッド攻撃対策やスキャン保護などの機能を使用する場合、WAF はデフォルトで
acw_tcという名前の Cookie を発行し、クライアントのアクセス動作を識別・追跡します。送信ステータス スイッチを使用して トレイル Cookie を有効または無効にできます。この Cookie を HTTPS リクエストに対してのみ発行するには、secure 属性 を有効にします。重要-
設定の推奨: 追跡 Cookie の 送信ステータス スイッチを有効にすることを推奨します。そうしないと、HTTP フラッド攻撃対策やスキャン保護などの保護モジュールが正常に機能しない可能性があります。
-
保護対象グループの制限: 保護対象グループ内の保護対象については、トレイル Cookie はデフォルトで有効になっています。これらの保護対象に対して トレイル Cookie を無効にしたり、secure 属性 を有効にしたりすることはできません。
-
有効なルール: リクエストが複数の保護対象に一致し、そのうち少なくとも 1 つの保護対象で トレイル Cookie または secure 属性 が有効になっている場合、その機能は一致したすべての保護対象で有効になります。
-
-
スライダー Cookie ユーザーがスライダーチャレンジをパスすると、WAF はデフォルトで
acw_sc__v3という名前の Cookie を発行して検証を記録します。この Cookie を HTTPS リクエストに対してのみ発行するには、secure 属性 を有効にします。重要-
スライダー Cookie の secure 属性 を有効にすると、HTTP サイトでのスライダー機能の正常な動作に影響を与える可能性があります。
-
保護対象グループに属する保護対象の場合、secure 属性 はデフォルトで無効になっており、有効にすることはできません。
-
-
-
カスタムレスポンスヘッダー (CNAME レコードモードのみ)
WAF リンク設定 タブで、カスタムレスポンスヘッダー を設定します。最大 5 つのヘッダーを追加できます。カスタムレスポンスヘッダーの ヘッダ名 がオリジンサーバーからのレスポンスヘッダーの name と同じ場合、元のヘッダーの value はここで設定した ヘッダ値 に置き換えられます。
-
デコード設定
デコード設定 タブで設定を行います。詳細については、「付録:デコード設定」をご参照ください。
-
アカウント抽出設定
アカウント抽出設定 タブで設定を行います。各保護対象に対して、優先度順に最大 5 つのルールを設定できます。
-
以下の場所からユーザー ID 情報を抽出できます:
-
クエリ文字列
-
ボディ
-
Cookie
-
Header
-
-
アカウント形式:
-
平文認証:例:email***@qq.com。
-
JWT 認証:通常はヘッダーに含まれ、JWT はユーザー情報を運ぶことができます。一般的な形式は
Authorization: Bearer {Token}です。トークンが JWT の場合、デコードされたペイロード内のアカウントフィールドを指定する必要があります。 -
基本認証:通常はヘッダーに含まれます。一般的な形式は
Authorization: Basic {Token}です。
-
-
-
処置アクション有効期限設定
処置アクション有効期限設定 タブで、以下のパラメーターを設定します:
-
JS検証有効期限:Rule Action が JS 検証 の場合の検証結果の有効期間。
-
動的トークン有効期限:ボット管理を使用して Web サービスを保護する際の トークンチャレンジ モードでの検証結果の有効期間。
-
スライダーの有効期限:Rule Action が スライダー の場合の検証結果の有効期間。
-
保護対象グループの管理
複数の保護対象に同じ保護ルールを適用するには、保護対象グループを使用して集中管理します。
-
WAF コンソールの左側のナビゲーションウィンドウで、 を選択します。
-
保護対象グループ タブで、Create をクリックします。
-
Create Protected Object Group ダイアログボックスで、[Protected object group name] を入力し、Associate with Protected Object を選択し、備考 を追加してから、OK をクリックします。
説明-
Associate with Protected Object セクションの 選択待ちの対象 リストには、どの保護対象グループにも属しておらず、デフォルトの保護テンプレートのみが適用されているか、保護テンプレートが適用されていない保護対象のみが含まれます。
-
すでに保護対象グループに属している保護対象を、別のグループに追加することはできません。別のグループに追加する前に、元のグループから削除する必要があります。
-
-
保護テンプレートを作成する際、有効対象 を 保護対象グループ に設定すると、テンプレートをグループ内のすべてのオブジェクトに適用できます。
日常の運用
保護対象の管理
-
保護対象の保護ルールを表示する: 対象の保護対象の 操作 列で、View Protection Rule をクリックします。Web コア保護 ページには、保護対象に関連付けられている保護テンプレート (設定済みの保護ルール) が表示されます。
-
保護対象を保護対象グループに追加する: 対象の保護対象の 操作 列で、
> Add to Protected Object Group をクリックします。複数の保護対象を選択し、リストの下にある Add to Protected Object Group をクリックすることもできます。 -
保護対象のログの表示: Log Service を有効化している場合、対象の保護対象の 操作 列にある
> View Logs をクリックできます。 -
保護対象を削除する: 対象のオブジェクトの 操作 列で、削除 をクリックします。手動で追加した保護対象のみ削除できます。自動生成された保護対象を削除するには、アセットを Remove する必要があります。
保護対象グループの管理
-
グループ内の保護対象を変更する: 保護対象グループ タブで、対象グループの 操作 列にある 編集 をクリックして、保護対象を追加または削除します。保護対象がグループから削除されると、デフォルトの保護テンプレートが自動的に適用されます。
-
グループの保護ルールを変更する: 保護対象グループ タブで、対象グループの 操作 列にある Configure Rule をクリックして、グループに関連付けられている保護テンプレートを表示および変更します。
-
保護対象グループを削除する: 保護対象グループ タブで、削除したいグループを見つけ、操作 列の 削除 をクリックします。
クォータと制限
-
保護対象数の制限: 保護対象、保護対象グループ、および 1 つのグループに追加できる保護対象の数は、WAF エディションによって異なります。詳細については、「WAF エディション」をご参照ください。保護対象ページにアクセスして、利用可能な保護対象の数を確認できます。クォータを使い切った場合は、保護対象を削除するか、WAF エディションをアップグレードできます。
-
保護対象の予約ルール: サブスクリプション WAF インスタンスの場合、WAF はご利用の WAF エディションに含まれる無料ドメイン名と、購入した追加ドメイン名のクォータを予約します。たとえば、5 つの無料ドメイン名を含み、600 の保護対象をサポートするサブスクリプション WAF Pro インスタンスがあり、2 つの ドメイン拡張 を購入した場合、WAF は 7 (5 + 2) 個の保護対象を予約します。これにより、追加で 593 (600 - 7) 個の保護対象のクォータが残ります。
-
保護対象の設定制限: クラウドサービスとして追加された Microservices Engine (MSE) インスタンスおよび Function Compute (FC) のカスタムドメイン名は、Cookie の設定 をサポートしていません。クラウドサービスとして追加された FC、MSE インスタンスは、デコード設定 をサポートしていません。
デコード設定
-
ALB インスタンスをクラウドサービスとして追加する場合、Base64 デコード はデフォルトで無効になっています。ビジネス要件に応じて有効にできます。
-
ハイブリッドクラウド SDK 統合の場合、デコード設定を有効にするには、エージェントをバージョン 4.1.0 以降にアップグレードする必要があります。
キーと値の解析
-
JSON データ解析
-
説明:JSON 解析モジュールは、RFC 7159 に従って JavaScript Object Notation (JSON) データを解析し、再構築します。このモジュールは、キーと値のオブジェクト、配列、文字列、数値などの JSON 構文を処理します。このプロセスには、構文検証、データ型変換、ネストされた構造の処理、および Unicode エスケープシーケンスのデコードが含まれます。JSON 形式を標準化することで、JSON ペイロード内の悪意のあるコンテンツを検出する WAF ルールの能力が向上します。
-
例:入力
{"Hello":"World"}の場合、JSON 解析はkeyをHelloとして、valueをWorldとして抽出します。
-
-
XML データ解析
-
説明:XML 解析モジュールは、XML 仕様 (W3C 勧告) に従って拡張マークアップ言語 (XML) データを解析し、再構築します。このモジュールは、要素、属性、テキストコンテンツ、CDATA セクション、処理命令など、XML ドキュメント構造の包括的な解析をサポートします。このプロセスには、構文検証、エンティティ参照の解決、名前空間処理、およびドキュメント構造の標準化が含まれます。XML 形式を標準化することで、XML ペイロード内の悪意のあるコンテンツを検出する WAF ルールの能力が向上します。
-
例:入力
<Hello attr="desc"><![CDATA[World]]></Hello>の場合、XML 解析はkeyをHelloとして、valueをWorldとして、key2をHello.attrとして、value2をdescとして抽出します。
-
-
フォームデータ解析
-
説明:フォーム解析モジュールは、RFC 1866 に従って application/x-www-form-urlencoded データを解析し、再構築します。このモジュールは、キーと値のペア、配列パラメーター、ファイルアップロードフィールド、ネストされた構造など、HTML フォームデータの包括的な解析をサポートします。このプロセスには、URL デコード、文字セット処理、パラメーター区切り文字の認識、およびデータ型変換が含まれます。フォームデータ形式を標準化することで、フォームペイロード内の悪意のあるコンテンツを検出する WAF ルールの能力が向上します。
-
例:入力
Hello=Worldの場合、フォーム解析はkeyをHelloとして、valueをWorldとして抽出します。
-
-
マルチパートデータ解析
-
説明:マルチパート解析モジュールは、RFC 2046 に従って multipart/form-data データを解析し、再構築します。このモジュールは、ファイルフィールド、テキストフィールド、境界区切り文字、ネストされた構造など、HTTP ファイルアップロードと複雑なフォームデータの包括的な解析をサポートします。このプロセスには、境界検出、フィールド解析、ファイルコンテンツ抽出、およびエンコーディング変換が含まれます。マルチパート形式を標準化することで、ファイルアップロードや複雑なフォームペイロード内の悪意のあるコンテンツを検出する WAF ルールの能力が向上します。
-
例:以下の入力の場合、マルチパート解析は
keyをHelloとして、valueをWorldとして抽出します。------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="Hello" World ------WebKitFormBoundary7MA4YWxkTrZu0gW--
-
-
GraphQL
-
説明:GraphQL 解析モジュールは、GraphQL 仕様に従って GraphQL クエリ言語データを解析し、再構築します。このモジュールは、フィールド選択、クエリパラメーター、変数置換、エイリアス、ネストされたクエリなど、GraphQL クエリ、変数定義、引数、ディレクティブの包括的な解析をサポートします。このプロセスは、URL パラメーター解析、JSON ペイロード、生の GraphQL クエリ、およびマルチパートファイルアップロード形式をサポートします。GraphQL 形式を標準化することで、GraphQL ペイロード内の悪意のあるコンテンツを検出する WAF ルールの能力が向上します。
-
例:入力クエリ
HelloWorld{ desc(Hello:"World"){ Hello } }の場合、GraphQL 解析はkeyをHelloとして、valueをWorldとして抽出します。
-
デコード
-
Base64 デコード
-
説明:Base64 デコードエンジンは、RFC 4648 で定義されている Base64 エンコーディングを逆変換します。このモジュールは、標準の Base64 文字セット (A-Z、a-z、0-9、+、/) とパディング文字 (=) を処理します。デコードプロセスには、文字検証、パディング処理、バイトアライメント、およびデータ整合性チェックが含まれ、バイナリデータの精度と信頼性を保証します。
-
例:入力
SGVsbG8gV29scmQhはHello World!にデコードされます。
-
-
HTML エンティティのデコード
-
説明:HTML エンティティデコードエンジンは、HTML 5.2 仕様 (W3C 勧告) に基づいて文字エンティティ参照を解析します。このモジュールは、数値文字参照 (&#x;) と名前付き文字エンティティ (&) の標準化された処理をサポートします。
-
例:入力
Hello World!はHello World!にデコードされます。
-
-
PHP 逆シリアル化
-
説明:PHP デシリアライゼーションエンジンは、PHP の serialize() 関数を逆変換します。PHP シリアル化プロトコルに基づいて、このモジュールは、型識別子 (i、s、a、O など)、長さメタデータ、再帰的なデータ構造など、シリアル化された形式の構文を解析します。このプロセスには、型検証、メモリ安全チェック、およびオブジェクトグラフの再構築が含まれ、スカラー型、複合型、およびオブジェクトシリアル化の完全な解析をサポートします。
-
例:入力
payload=O:5:"Hello":1:{s:4:"desc";s:6:"World!";}の場合、PHP デシリアライゼーションはkeyをpayload.Hello.descとして、対応するvalueをWorld!として抽出します。
-
-
Java 逆シリアル化
-
説明:Java デシリアライゼーションは、Java シリアル化プロトコルに基づいて ObjectInputStream を逆変換します。このモジュールは、クラス記述子、フィールドメタデータ、オブジェクト状態情報など、Java シリアル化ストリームのバイナリ形式を解析します。デコードプロセスは JVM シリアル化仕様に従い、複雑なオブジェクトグラフの再帰的解析をサポートします。
-
例:入力
rO0ABXNyABFqYXZhLnV0aWwuSGFzaE1hcAUH2sHDFmDRAwACRgAKbG9hZEZhY3RvckkACXRocmVzaG9sZHhwP0AAAAAAAAx3CAAAABAAAAABdAAFSGVsbG90AAZXb3JsZCF4の場合、Java デシリアライゼーションは Java クラスjava.util.HashMapを抽出します。
-
-
UTF-7
-
説明:UTF-7 デコードエンジンは、RFC 2152 に従って可変長文字エンコーディングを変換します。このモジュールは、UTF-7 エンコーディングマーカー (+/-) と Base64 エンコードされた Unicode 文字シーケンスを処理します。このアルゴリズムは、7 ビット ASCII 環境での Unicode 伝送をサポートし、エンコーディング状態機械、文字セット切り替え、およびレガシープロトコル互換性を含みます。これにより、メールシステムや MIME メッセージ伝送シナリオに適しています。
-
例:入力
+/v8 +AEgAZQBsAGwAbwAgAFcAbwByAGwAZAAh-はHello World!にデコードされます。
-
-
Unicode
-
説明:Unicode デコードは、Unicode 標準 (ISO/IEC 10646) に基づく文字エンコーディング変換プロセスです。このモジュールは UTF-16 エスケープシーケンスを解析し、\uXXXX の 4 バイト 16 進数表記と \u{XXXXXX} の拡張フォーマットをサポートします。デコードプロセスは、標準化された文字エンコーディングを保証するために Unicode 15.0 仕様に従います。
-
例:入力
\u0048\u0065\u006c\u006c\u006f\u0020\u0057\u006f\u0072\u006c\u0064\u0021の場合、Unicode デコード後の出力はHello World!です。
-
-
URL デコード
-
説明:URL デコードは、RFC 3986 に基づいてパーセントエンコーディングを逆変換します。このメカニズムは、一般的な URI 構文における予約文字、非 ASCII 文字、および特殊文字のエンコーディングを処理します。デコードアルゴリズムは、application/x-www-form-urlencoded MIME タイプ仕様に従い、HTTP リクエストパラメーターの標準的な解析をサポートします。
-
例:入力
Hello%20World%21はHello World!にデコードされます。
-
-
16 進数デコード
-
説明:16 進数デコードは、RFC 4648 に基づいて 16 進数文字列をバイナリデータに変換します。このモジュールはビッグエンディアンバイトオーダーを使用し、標準の 16 進数文字セット (0-9、A-F、a-f) をサポートします。デコードプロセスには、入力検証、文字正規化、およびバイトアライメントが含まれます。
-
例:入力
\x48\x65\x6c\x6c\x6f\x20\x57\x6f\x72\x6c\x64\x21はHello World!にデコードされます。
-
-
Oct
-
説明:8 進数デコードエンジンは、
\123のように、バックスラッシュに続く 8 進数で表される文字エンコーディングを処理します。ASCII テーブルに基づいて、このモジュールは 8 進数を対応する文字に変換し、標準の 8 進数範囲 0-377 (10 進数で 0-255) をサポートし、混合テキスト内の 8 進数エスケープシーケンスをバッチで解析できます。 -
例:入力
\110\145\154\154\157\040\127\157\162\154\144\041はHello World!にデコードされます。
-
展開
-
Gzip
-
説明:Gzip 展開エンジンは、RFC 1952 に基づいて動作し、DEFLATE アルゴリズムを使用します。このモジュールは、Gzip ファイル形式ヘッダー (マジックナンバー 0x1f8b、圧縮方法、フラグ)、CRC32 チェックサムを処理し、圧縮されたデータブロックを展開します。このアルゴリズムは、ストリーム処理とバッチ展開をサポートし、状態機械管理、マルチメンバーファイル処理、およびエラー回復メカニズムを含みます。Web 伝送、ファイルアーカイブ、およびデータ圧縮シナリオに適しています。
-
例:入力バイナリデータ
1f 8b 08 00 11 39 00 69 00 ff 01 0c 00 f3 ff 48 65 6c 6c 6f 20 57 6f 72 6c 64 21 a3 1c 29 1c 0c 00 00 00(読みやすさのために 16 進数形式で表示) の場合、Gzip 展開は出力Hello World!を生成します。
-
前処理
-
コメント除去
-
説明:コメント除去モジュールは、SQL 標準および MySQL 拡張構文に基づいてコメント構文を認識し、削除します。このモジュールは、ANSI SQL 標準で定義された 2 つのコメント形式をサポートします:単一行コメント (-- に続く行末までの任意の文字) と複数行コメント (/* */ で囲まれた任意の文字シーケンス)。また、MySQL 固有の条件付きコメント構文 (/*! ... */) とも互換性があります。このプロセスには、コメントマーカー認識、ネストされたコメントの処理、バージョン条件解析、および構文境界検証が含まれます。コメント内容を削除することで、このモジュールは悪意のある SQL ステートメントに対する WAF ルールエンジンの検出精度を向上させ、攻撃者がコメントを使用してルールをバイパスするリスクを低減します。
-
例:入力
/*!40101 SET */@OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT ;の場合、コメント除去は出力 SET@OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT ;を生成します。
-
-
空白圧縮
-
説明:空白圧縮モジュールは、連続する空白文字を正規化します。このモジュールは、入力文字列内の連続する空白文字のシーケンスを検出し、それらを単一のスペースに圧縮します。このプロセスには、先頭、末尾、および中間の連続する空白の統一的な処理が含まれ、テキスト形式の標準化と一貫性を保証します。
-
例: 入力
Hello World!は、空白文字の圧縮によってHello World!として出力されます。
-