ADC

JSON SQL インジェクション保護

受信 JSON リクエストでは、部分的な SQL クエリ文字列またはコード内の不正なコマンドの形式で SQL インジェクションが行われることがあります。これにより、ウェブサーバーの JSON データベースからデータが盗まれることになります。このような要求を受信すると、アプライアンスはお客様のデータ保護要求をブロックします。

クライアントがJSON SQL要求をNetScalerアプライアンスに送信し、JSONパーサーが要求ペイロードを解析し、SQLインジェクションが観察された場合、アプライアンスはJSON SQLコンテンツに制約を適用するシナリオを考えてみましょう。この制約により、JSON SQL リクエストにサイズ制限が適用されます。その結果、JSON SQL インジェクションが検出されると、アプライアンスはアクションを適用し、JSON SQL エラーページで応答します。

JSON SQL インジェクション保護

JSON SQL 保護を設定するには、次の手順を完了する必要があります。

  1. アプリケーションファイアウォールプロファイルを JSON として追加します。
  2. JSON SQL インジェクション設定のアプリケーションファイアウォールプロファイルの設定
  3. アプリケーションファイアウォールプロファイルをバインドして JSON SQL アクションを設定します。

JSON タイプのアプリケーションファイアウォールプロファイルの追加

最初に、アプリケーションファイアウォールが JSON Web コンテンツを JSON SQL インジェクション攻撃から保護する方法を指定するプロファイルを作成する必要があります。 コマンドプロンプトで入力します:

add appfw profile <name> -type (HTML | XML | JSON)

注記:

プロファイルタイプを JSON に設定すると、HTML や XML などの他のチェックは適用されません。

add appfw profile profile1 –type JSON

JSON SQL インジェクションの設定

JSON SQL インジェクション攻撃からアプリケーションを保護するには、1 つ以上の JSON SQL インジェクションアクションを設定する必要があります。 コマンドプロンプトで入力します:

set appfw profile <name> - JSONSQLInjectionAction [block] [log] [stats] [none]

SQL インジェクションアクションは次のとおりです。 ブロック-このセキュリティー検査に違反する接続をブロックします。 Log - このセキュリティチェックの違反を記録します。 Stats-このセキュリティー検査の統計を生成します。 [なし]-このセキュリティー検査に対するすべてのアクションを無効にします。

JSON SQL インジェクションタイプ

アプリケーションファイアウォールプロファイルで JSON SQL Injection タイプを構成するには、コマンドプロンプトで次のように入力します。

set appfw profile <name> - JSONSQLInjectionType <JSONSQLInjectionType>

set appfw profile profile1 -JSONSQLInjectionType SQLKeyword

利用可能な SQL インジェクションタイプは、 利用可能な SQL インジェクションタイプです。 SQLSplChar. SQL 特殊文字 SQLKeywordをチェックします。SQL キーワードをチェックします。 SQLSplCharANDKeyword. ブロックが見つかった場合は、ブロックとブロックの両方をチェックします。 SQLSplCharORKeyword. . SQL 特殊文字または spl キーワードが見つかった場合にブロックします。 指定可能な値は sqlSPLChar、sqlKeyword、sqlSPLCharor キーワード、sqlSPLCharand キーワードです。

:1 つ以上のアクションを有効にするには、「set appfw プロファイル-jsonSQLInjectionAction」に続けて有効にするアクションを入力します。

set appfw profile profile1 -JSONSQLInjectionAction block log stat

次に、ペイロード、対応するログメッセージ、および統計カウンタの例を示します。

Payload:
=======
{
  "test": "data",
  "username": "waf",
  "password": "select * from t1;",
  "details": {
    "surname": "test",
    "age": "23"
  }
}

Log Message:
===========
08/19/2019:08:49:46 GMT pegasus121 Informational 0-PPE-0 : default APPFW APPFW_JSON_SQL 6656 0 :  10.217.32.165 18402-PPE0 - profjson http://10.217.32.147/test.html SQL Keyword check failed for object value(with violation="select(;)") starting at offset(52) <blocked>
Counters:
========
   1  441083             1 as_viol_json_sql
   3       0             1 as_log_json_sql
   5       0             1 as_viol_json_sql_profile appfw__(profjson)
   7       0             1 as_log_json_sql_profile appfw__(profjson)
<!--NeedCopy-->

Citrix GUI を使用して JSON SQL インジェクション保護を構成する

JSON SQL インジェクション保護設定を設定するには、次の手順に従います。

  1. ナビゲーションペインで、[ セキュリティ ] > [ プロファイル] に移動します。
  2. プロファイル 」ページで、「 追加」をクリックします。
  3. Citrix Web App Firewallプロファイルページで 、「 詳細設定 」の「 セキュリティチェック」をクリックします。
  4. [ セキュリティチェック ] セクションで、[ JSON SQL インジェクション設定 ] に移動します。
  5. チェックボックスの近くにある実行可能アイコンをクリックします。
  6. [アクション設定]をクリックして、[JSON SQL インジェクション設定] ページにアクセスします。
  7. JSON SQL インジェクションアクションを選択します
  8. [OK] をクリックします。
  9. [Citrix Web App Firewall プロファイル ]ページで、[ 詳細設定 ]の[ 緩和ルール]をクリックします。
  10. [ 緩和ルール ] セクションで、[ JSON SQL インジェクション設定 ] を選択し、[編集] をクリックします。
  11. [JSON SQL インジェクション緩和ルール] ページで、リクエストの送信先となる URL を入力します。この URL に送信されたすべてのリクエストはブロックされません。
  12. [Create] をクリックします。

    JSON SQL インジェクションのセキュリティチェック

JSON SQL インジェクション保護