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

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

2007-11-26 18:43

SQLインジェクションの検査手法

 SQLインジェクションは、特別なHTTPリクエストを送信すると、HTTPレスポンスに、「SQLインジェクションが可能です」といった文字列が、常にXSSのように含まれるわけではない。このため、XSSの検査に比べて、脆弱性の有無が分かりにくいことが多い。

 しかし、以下のような方法で、SQLインジェクションの脆弱性の有無をある程度(単純なケースならば)判断することが可能だ。

1. エラーメッセージの内容を元に確認

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

 それでは、それぞれの方法で、どのように検査を実施するか見ていこう。

1. エラーメッセージの内容を元に確認

 この方法は、組み立てられたSQL文が文法エラーとなるように入力データを細工したリクエストを送信し、そのHTTPレスポンスにシステムが出力する文法エラーが含まれているかどうかで判断する。この方法で検査する場合に使用する検査データには、たとえば以下のようなものがある。

  • 「;」を用いてSQL文を強制的に終了させるケース
  • 「'」を用いて文字列定数を強制的に終了させるケース

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

SQL文(3)

 これらは、SQL文として不適切であるため、データベースがエラーをアプリケーションに返す。サーバの設定に依存するが、アプリケーションは、データベースから受け取ったエラーをそのままHTTPレスポンスとして返すことがあり、検査ではデータベースのエラーがHTTPレスポンスに含まれていないかを確認する。

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

ZDNET Japan クイックポール

注目している大規模言語モデル(LLM)を教えてください

NEWSLETTERS

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

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

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