Citrix ADC

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

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

フォームフィールドの一貫性チェックは、クライアントがフォームに入力して送信するときに、Web サイト上の Web フォームの構造に不正な変更を加えることを防ぎます。また、ユーザーが送信するデータが長さとタイプに関する HTML の制限を満たし、非表示フィールドのデータが変更されないようにします。これにより、攻撃者が Web フォームを改ざんし、修正されたフォームを使用して Web サイトへの不正アクセスを取得したり、安全でないスクリプトを使用する連絡先フォームの出力をリダイレクトして迷惑なバルクメールを送信したり、Web サーバーソフトウェアの脆弱性を悪用してWeb サーバーまたは基盤となるオペレーティングシステムを使用します。Webフォームは、多くのWebサイト上の弱いリンクであり、攻撃の広い範囲を引き付けます。

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

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

    注:

    フォームフィールドの一貫性チェックでは、データ型と長さに HTML の制限が適用されますが、Web フォーム内のデータの検証は行われません。[フィールド形式] チェックを使用すると、Web フォーム上の特定のフォームフィールドに返されたデータを検証するルールを設定できます。

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

ユーザーから返された Web フォームが 1 つ以上のフォームフィールドの一貫性チェックに違反し、その Web フォームがフォームフィールドの一貫性チェックに違反することを許可するように Web アプリケーションファイアウォールを設定していない場合、リクエストはブロックされます。

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

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

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

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

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

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

フォームフィールド名:

  • UserType という名前のフォームフィールドを選択します。

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

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

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

    注:

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

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

     ^[0-9A-Za-z]\*Num[0-9A-Za-z]\*$
    

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

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

     ^http://www[.]example[.]com/search[.]pl?[^?]*$
    
  • http://www.example-español.comで始まる URLを選択し、大文字と小文字、数字、非ASCII特殊文字、および選択された記号で構成されるパスとファイル名を含めます。ñ文字およびその他の特殊文字は、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?)$
    
  • /search.cgi という文字列を含むすべての URL を選択してください。 :

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

注意:

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

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