サイト脆弱性をチェックしよう!--第6回:SQLインジェクションの検査方法 - (page 3)

池田雅一(テクマトリックス)

2007-11-26 18:43

2. 特別な値を入力データとする複数のHTTPリクエストに対するHTTPレスポンスの違いを元に確認

 実行時のエラー処理がなされているため、1.のような検査方法では脆弱性の有無が判断できないケースがある。この場合、入力データがそのままSQL文として組み立てられると、違う入力データであるにもかかわらず同じ結果が常に返ってくるなど、特定の処理が行われる検査データを含むHTTPリクエストを複数送信し、それらのHTTPレスポンスの違いからSQLインジェクションの有無を判断する。

 これは、SQL文が文字列で表現されており、異なるSQL文であっても同じ結果を得ることができることを利用している。この方法で検査する場合に使用する検査データには、たとえば以下のようなものを元の入力データ(正常に処理が行える入力データ)に追加する。

SQL文(4)

 これらの値をパラメータ値として使用した場合、先の例のSQL文では以下のようなSQL文が作成される。

SQL文(5)

 この例は、入力データが検索条件に使用される場合の検査だが、同じような考え方により、入力データを更新、追加する値として使用している場合についても適切なSQL文を作成する複数の入力データを用いることで、脆弱性の有無を検出することが可能だ。

ZDNET Japan 記事を毎朝メールでまとめ読み(登録無料)

ZDNET Japan クイックポール

自社にとって最大のセキュリティ脅威は何ですか

NEWSLETTERS

エンタープライズ・コンピューティングの最前線を配信

ZDNET Japanは、CIOとITマネージャーを対象に、ビジネス課題の解決とITを活用した新たな価値創造を支援します。
ITビジネス全般については、CNET Japanをご覧ください。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]