例 2: 「トレース」ビューでの検証ルーチンとエンコード・ルーチンの作成

このタスクについて

AppScan® ソース・トレース により、汚染されたデータのソースは FileInputStream.read メソッドであることが検出されました。この例では、この検出結果が次回からのスキャンでは検出されないようにするため、検証ルーチンまたはエンコード・ルーチンを作成します。

FileInputStream.read の入力検証ルーチンを作成するには、以下の手順を実行します。

手順

  1. 「トレース」ビューの呼び出しグラフで、TestCase_IOT_Instance_Val_Encode.encode メソッドを選択して右クリックします。
    ヒント: 作成する検証ルーチンとエンコード・ルーチンがトレース・グラフに表示されない場合は、「トレース」ビューからカスタム・ルール・ウィザードを起動してルーチンを作成できます。例 2: カスタム・ルール・ウィザードでの検証ルーチンとエンコード・ルーチンの作成 では、これを行う場合のステップが説明されています。
  2. メニューで、「検証/エンコード・ルーチンとしてマークする」を選択します。
    「検証/エンコード・ルーチンとしてマークする」メニュー項目
  3. encode ルーチンが FileInputStream.read を呼び出すこの特定のインスタンスにしか適用されない場合は、「この検証ルーチンを適用する方法を指定してください」ダイアログ・ボックスで「java.io.FileInputStream.read に対するこの呼び出し」を選択します。
    この検証ルーチンを適用する方法を指定してください

    validate メソッドはクラスに対するプライベート・メソッドで、コードに緊密に関連付けられるため、通常は「java.io.FileInputStream.read に対するこの呼び出し」を指定します。

    read メソッドに対するすべての呼び出しについて検証ルーチンを適用する場合は、「java.io.FileInputStream.read に対するすべての呼び出し」を選択します。このオプションを選択する場合、現在のプロジェクトについてのみ有効にするには「このプロジェクトに適用」を選択する必要があります。そうでない場合は、「すべてのプロジェクトに適用」を選択してください。

  4. FileInputStream クラスのすべての read メソッドと Technology.IO のプロパティーを含む任意のシンク (java.io.PrintWrite.write メソッドなど) に適用されるルーチンをセットアップします。
    1. ソースとしての read メソッドの追加:「java.io.FileInputStream.read(byte[]):int に対するすべての呼び出し」を指定して、java.io.FileInputStream.read(byte[]):int をソースとして追加することもできますが、そうではなく、ソースを個別に追加することにします。「この検証ルーチンを適用する方法を指定してください」ダイアログ・ボックスで、「適用対象」メニューの「java.io.FileInputStream.read(byte[]):int は考慮されません。すべての制約は下で指定されています」を選択します。次に、「ソース」セクションの「追加」ボタンをクリックします。「シグニチャーの選択」ダイアログ・ボックスで、java.io セクションを展開し、次に FileInputStream セクションを展開します。java.io.FileInputStream.read* ノードを複数選択してから、「OK」をクリックします。

      「シグニチャーの選択」ダイアログ・ボックス
      注: リストされているシグニチャーの数は、アプリケーションの使用状況によって決まります。適用したいものをすべて選択してください。
    2. シンク・プロパティーの追加:「VMAT プロパティーを追加」ボタンの「シンク・プロパティー (Sink Properties)」セクションをクリックします。「プロパティーの選択」ダイアログ・ボックスで、Technology.IO プロパティーを選択してから、「OK」をクリックします。
    3. すべての設定が完了すると、ダイアログ・ボックスは以下のように表示されているはずです。

      設定完了後の「この検証ルーチンを適用する方法を指定してください」ダイアログ・ボックス
  5. 「OK」をクリックして、検証ルーチンを保存し、共有します。