アプリケーションに意図しない動作をさせるには、入力データに想定していなかったデータを使用するか、想定していないタイミングでページの呼び出しを行う必要がある。従って脆弱性の確認テストでは入力データに想定していなかったデータを使用するか、想定していないタイミングでページを呼び出す以下のようなチェックを行う。
想定していないデータ種類のテスト |
---|
・数値項目に英字や記号を入れるなどのテストを実施する。 ・設計どおりの処理(エラー処理など)がされているかを確認する。 |
メタキャラクタのテスト |
・「'」「"」「<」「>」「&」「;」「|」「\」など特別な意味を持つデータを入力するテストを実施。 ・設計どおりの処理(エラー処理など)がされているかを確認する。 |
選択肢以外のデータのテスト |
・ラジオボタン、チェックボックス、セレクトリストで指定している選択肢以外のデータを入力するテストを実施する。 ・設計どおりの処理(エラー処理など)がされているかを確認する。 |
Hiddenフィールド、Cookie書き換えテスト |
・Hiddenフィールド、Cookieを他の値に書き換えるテストを実施する。 ・設計どおりの処理(エラー処理など)がされているかを確認する。 |
非常に大きな桁数のデータのテスト |
・通常10桁程度しかないパラメータに1000桁のデータなどを入れるテストを実施する。 ・設計どおりの処理(エラー処理など)がされているかを確認する。 |
境界値前後のテスト |
・たとえば、0〜100の値をとる項目に対し、「-1,199,101」といったデータを入力するテストを実施する。 ・設計どおりの処理(エラー処理など)がされているかを確認する。 |
非常に大きな数字、非常に小さな数字のテスト |
・数値項目に99999999999999999999、-99999999999999999999、0.0000000000000001、-0.0000000000000001といったデータを入力するテストを実施する。 ・設計どおりの処理(エラー処理など)がされているかを確認する。 |
パラメータの削除のテスト |
・正常なリクエスト時に送信されるパラメータを削除するテストを実施する。 ・設計どおりの処理(エラー処理など)がされているかを確認する。 |
パラメータ値削除のテスト |
・正常なリクエスト時に送信されるパラメータの値を削除するテストを実施する。 ・設計どおりの処理(エラー処理など)がされているかを確認する。 |
処理フローを無視した呼び出し |
---|
・たとえば、画面遷移が「ページA」→「ページB」→「ページC」という処理で、ページAにアクセスした直後にページCへアクセスするテストを実施する。 ・設計どおりの処理(エラー処理など)がされているかを確認する。 |
同時呼び出し |
・異なるユーザーで同時にログインしてみるなど、異なるユーザーで同時に同じ処理を行うテストを実施する。 ・同時に行った処理が別の処理として行われているかを確認する。 |
入力データのテストでは、すべてのパラメータ、Cookieをテスト対象とする必要があるが、Javas Scriptでエラーチェックを行っていた場合や、Hiddenフィールドやラジオボタンなどはブラウザでは値の変更ができない。このような場合、「Paros」のようなリクエストを書き換えられるツールを使用したり、保存したHTMLファイルを書き換えてテストを実施する。具体的な方法についてはツールのマニュアルなどを参照してほしい。