フォームフィールドの一貫性チェック
フォームフィールドの整合性チェックは、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 アプリケーションファイアウォールを設定していない場合、リクエストはブロックされます。
ウィザードまたは 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
で始まる 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?)$ <!--NeedCopy-->
-
/search.cgi という文字列を含むすべての URL を選択してください。 :
^[^?<>]\*/search[.]cgi?[^?<>]\*$ <!--NeedCopy-->
注意:
正規表現は強力です。特に、PCRE形式の正規表現に精通していない場合は、記述した正規表現を再確認してください。例外として追加する URL を正確に定義していることを確認し、それ以外は何も定義しないでください。ワイルドカード、特にドットとアスタリスク(.*)メタキャラクタとワイルドカードの組み合わせを不注意に使用すると、意図しないWebコンテンツへのアクセスをブロックしたり、Cookieの一貫性チェックでそうしない攻撃を許可したりするなど、望ましくない結果が得られる可能性があります。ブロックされています。