ADC

フォームフィールドの一貫性チェック

フォームフィールドの一貫性チェックは、Web サイトのユーザーから返された Web フォームを調べ、Web フォームがクライアントによって不適切に変更されていないことを確認します。このチェックは、データの有無にかかわらず、Web フォームを含む HTML リクエストにのみ適用されます。XML 要求には適用されません。

フォームフィールドの一貫性チェックは、クライアントがフォームに入力して送信するときに、Webサイト上のWebフォームの構造に不正な変更を加えることを防ぎます。また、ユーザーが送信するデータが長さと種類に関する HTML の制限を満たしていること、および非表示フィールドのデータが変更されないことも保証されます。これにより、攻撃者が Web フォームを改ざんしたり、変更されたフォームを使用して Web サイトに不正にアクセスしたり、安全でないスクリプトを使用する問い合わせフォームの出力をリダイレクトして迷惑メールを一括送信したり、Web サーバーソフトウェアの脆弱性を悪用して Web サーバーや基盤となるオペレーティングシステムを制御したりすることを防ぎます。Web フォームは、多くの Web サイトの弱点であり、さまざまな攻撃を受けやすくなります。

フォームフィールドの一貫性チェックでは、次のすべてが検証されます。

  • フィールドがユーザーに送信されると、チェックによってそのフィールドがユーザーによって返されるかどうかが確認されます。
  • このチェックでは、HTML フィールドの長さとタイプが強制されます。

    注:

    • フォームフィールドの一貫性チェックは、データ型と長さに HTML の制限を適用しますが、それ以外の場合は Web フォーム内のデータを検証しません。フィールドフォーマットチェックを使用して、Web フォームの特定のフォームフィールドに返されたデータを検証するルールを設定できます。

    • フォームフィールドの一貫性保護は、クライアントに送信される応答フォームに隠しフィールド「as_fid」を挿入します。クライアントがフォームを送信すると、同じ隠しフィールドが ADC によって削除されます。クライアントサイドのJavaScriptがフォームフィールドでチェックサム計算を行い、バックエンドで同じチェックサムを検証すると、アプリケーションが壊れる可能性があります。このシナリオでは、アプリケーションファイアウォールのフォームフィールドの一貫性隠しフィールド「as_fid」をクライアント側の JavaScript チェックサム計算から解放することをお勧めします。

  • Web サーバーがユーザーにフィールドを送信しない場合、このチェックではユーザーがそのフィールドを追加してデータを返すことはできません。
  • フィールドが読み取り専用または非表示のフィールドの場合、チェックはデータが変更されていないことを確認します。
  • フィールドがリストボックスまたはラジオボタンフィールドの場合、チェックは応答のデータがそのフィールドの値の 1 つに対応しているかどうかを検証します。

ユーザーから返された Web フォームが 1 つ以上のフォームフィールドの一貫性チェックに違反していて、その Web フォームがフォームフィールドの一貫性チェックに違反することを許可するように Web App Firewall を構成していない場合、リクエストはブロックされます。

ウィザードまたは GUI を使用する場合、[フォームフィールドの一貫性チェックの変更] ダイアログボックスの [全般] タブで、[ブロック]、[ログ]、[学習]、および [統計] の各アクションを有効または無効にできます。

また、[全般] タブでセッションレスフィールドの一貫性を設定します。セッションレスフィールドの一貫性が有効になっている場合、Web App Firewall は Web フォーム構造のみをチェックし、セッション情報の維持に依存するフォームフィールドの一貫性チェックの部分は省略します。これにより、多くのフォームを使用する Web サイトのセキュリティ上のペナルティをほとんど発生させずに、フォームフィールドの一貫性チェックを高速化できます。すべての Web フォームでセッションレスフィールドの一貫性を使用するには、「オン」を選択します。HTTP POST メソッドで送信されたフォームにのみ使用するには、[postOnly] を選択します。

コマンドラインインターフェイスを使用する場合は、次のコマンドを入力してフォームフィールドの一貫性チェックを設定できます。

  • set appfw profile <name> -fieldConsistencyAction [**block**] [**learn**] [**log**] [**stats**] [**none**]

フォームフィールドの一貫性チェックの緩和を指定するには、GUI を使用する必要があります。フォームフィールドの一貫性チェックを修正ダイアログボックスの「チェック」タブで、「追加」をクリックして「フォームフィールドの一貫性チェックリラクゼーションを追加」ダイアログボックスを開くか、既存のリラクゼーションを選択して「開く」をクリックして、フォームフィールドの一貫性チェックリラクゼーションの変更ダイアログボックスを開きます。どちらのダイアログボックスでも、「 GUI を使用した手動設定」で説明されているように、緩和の設定に同じオプションが用意されています

フォームフィールドの一貫性チェック緩和の例を次に示します。

フォームフィールド名:

  • UserType という名前のフォームフィールドを選択してください:

     ^UserType$
     <!--NeedCopy-->
    
  • 名前が UserType_ で始まり、文字または数字で始まり、1 ~ 21 の文字、数字、またはアポストロフィまたはハイフン記号で構成されるストリングが続くフォームフィールドを選択します。

     ^UserType_[0-9A-Za-z][0-9A-Za-z'-]{0,20}$
     <!--NeedCopy-->
    
  • 名前が Turkish-userType_ で始まり、それ以外は前の式と同じフォームフィールドを選択してください。ただし、全体にトルコ語の特殊文字を含めることができます。

     ^T\xC3\xBCrk\xC3\xA7e-UserType_([0-9A-Za-z]|\x[0-9A-Fa-f][0-9A-Fa-f])+$
     <!--NeedCopy-->
    

    注:

    サポートされている特殊文字の完全な説明と、それらを適切にエンコードする方法については、PCRE 文字エンコーディング形式を参照してください

  • 文字または数字で始まり、文字または数字のみの組み合わせで構成され、文字列内の任意の場所に文字列 Num を含むフォームフィールド名を選択します。

     ^[0-9A-Za-z]\*Num[0-9A-Za-z]\*$
     <!--NeedCopy-->
    

フォームフィールドアクション URL:

  • 新しいクエリを除く http://www.example.com/search.pl? 、クエリの後に続く任意の文字列を含む URL を選択します。

     ^http://www[.]example[.]com/search[.]pl?[^?]*$
     <!--NeedCopy-->
    
  • http://www.example-español.comで始まり、大文字と小文字、数字、ASCII以外の特殊文字、およびパス内の選択した記号で構成されるパスとファイル名を含むURLを選択してください。ñ文字やその他の特殊文字は、UTF-8文字セットの各特殊文字に割り当てられた16進コードを含むエンコードされたUTF-8文字列として表現されます。

     ^http://www[.]example-espa\xC3\xB1ol[.]com/(([0-9A-Za-z]|\x[0-9A-Fa-f][0-9A-Fa-f])
     ([0-9A-Za-z_-]|\x[0-9A-Fa-f][0-9A-Fa-f])\*/)\*([0-9A-Za-z]|\x[0-9A-Fa-f][0-9A-Fa-f])
     ([0-9A-Za-z_-]|\x[0-9A-Fa-f][0-9A-Fa-f])*[.](asp|htp|php|s?html?)$
     <!--NeedCopy-->
    
  • 「/search.cgi?」という文字列を含むすべての URL を選択してください:

     ^[^?<>]\*/search[.]cgi?[^?<>]\*$
     <!--NeedCopy-->
    

注意:

正規表現は強力です。特に PCRE 形式の正規表現に慣れていない場合は、作成した正規表現をすべて再確認してください。例外として追加する URL を正確に定義し、それ以外は何も定義していないことを確認してください。ワイルドカード、特にドットとアスタリスク(.*)メタキャラクタとワイルドカードの組み合わせを不注意に使用すると、意図しないWebコンテンツへのアクセスをブロックしたり、Cookieの一貫性チェックでそうしない攻撃を許可したりするなど、望ましくない結果が得られる可能性があります。ブロックされています。

フォームフィールドの一貫性チェック

この記事の概要