情報セキュリティ講座(103) SQLインジェクション攻撃

SQLインジェクション攻撃は、WEBサービスの入力画面で、不正なSQL文を投入することで、データベースを操作する攻撃です。

WEBサービスに限らず、システムはアプリケーションとデータベースで構成されます。データベースは、SQL文という共通の文法により、閲覧・更新・追加・削除ができます。SQLインジェクション攻撃は、この点を突いて、データベースのデータを改ざんするなどの攻撃をするものです。ログイン画面で、巧妙にしかけられたSQL文を投入して、パスワードを書き換えたり、というような形です。

SQLインジェクション攻撃の対策としては、次のものがあります。

1. プレースホルダ

SQL文に変数を与える際に、プレースホルダを用います。アプリケーションからデータベースにSQL文を投入する際に、変数が「?」などのプレースホルダで引き渡されれば、予期しないSQL文が構成されることはありません。

2. エスケープ処理

SQL文を構成する変数に対してエスケープ処理を行えば、文字列として与えられた悪意ある文字列が、無害化されます。

‘を””に、\\を\\\\に変換するなどです。

3. エラーメッセージ

データベースのエラーメッセージをそのままブラウザに表示すると、どのような文字列を投入すれば、データベースからどのような反応が返ってくるのか、わかってしまいます。システムエラーメッセージは、ユーザ画面には表示しないよう注意します。

投稿者プロフィール

小笠原 裕
小笠原 裕中小企業診断士 行政書士
バラの咲く街、八千代市緑が丘で、コンサルティング事務所を運営しています。