例 2: 「トレース」ビューでの検証ルーチンとエンコード・ルーチンの作成
このタスクについて
AppScan® ソース・トレース により、汚染されたデータのソースは FileInputStream.read
メソッドであることが検出されました。この例では、この検出結果が次回からのスキャンでは検出されないようにするため、検証ルーチンまたはエンコード・ルーチンを作成します。
FileInputStream.read
の入力検証ルーチンを作成するには、以下の手順を実行します。
手順
- 「トレース」ビューの呼び出しグラフで、
TestCase_IOT_Instance_Val_Encode.encode
メソッドを選択して右クリックします。ヒント: 作成する検証ルーチンとエンコード・ルーチンがトレース・グラフに表示されない場合は、「トレース」ビューからカスタム・ルール・ウィザードを起動してルーチンを作成できます。例 2: カスタム・ルール・ウィザードでの検証ルーチンとエンコード・ルーチンの作成 では、これを行う場合のステップが説明されています。 - メニューで、「検証/エンコード・ルーチンとしてマークする」を選択します。
encode
ルーチンがFileInputStream.read
を呼び出すこの特定のインスタンスにしか適用されない場合は、「この検証ルーチンを適用する方法を指定してください」ダイアログ・ボックスで「java.io.FileInputStream.read に対するこの呼び出し」を選択します。
validate
メソッドはクラスに対するプライベート・メソッドで、コードに緊密に関連付けられるため、通常は「java.io.FileInputStream.read に対するこの呼び出し」を指定します。read
メソッドに対するすべての呼び出しについて検証ルーチンを適用する場合は、「java.io.FileInputStream.read に対するすべての呼び出し」を選択します。このオプションを選択する場合、現在のプロジェクトについてのみ有効にするには「このプロジェクトに適用」を選択する必要があります。そうでない場合は、「すべてのプロジェクトに適用」を選択してください。FileInputStream
クラスのすべてのread
メソッドとTechnology.IO
のプロパティーを含む任意のシンク (java.io.PrintWrite.write
メソッドなど) に適用されるルーチンをセットアップします。- ソースとしての
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」をクリックします。注: リストされているシグニチャーの数は、アプリケーションの使用状況によって決まります。適用したいものをすべて選択してください。 - シンク・プロパティーの追加:「VMAT プロパティーを追加」ボタンの「シンク・プロパティー (Sink Properties)」セクションをクリックします。「プロパティーの選択」ダイアログ・ボックスで、
Technology.IO
プロパティーを選択してから、「OK」をクリックします。 - すべての設定が完了すると、ダイアログ・ボックスは以下のように表示されているはずです。
- ソースとしての
- 「OK」をクリックして、検証ルーチンを保存し、共有します。