WebアプリケーションなどでSQL文を動的に作成してデータベースにアクセスする仕組みを利用して、不正なSQL文を入力に埋め込むことによりデータベースを不正に操作する攻撃手法のことです。 SQLインジェクションは、OSコマンドインジェクションと同様な仕組みで、入力された文字列を検査せずにSQL文に展開することが原因で発生します。例えば、ユーザ名とパスワードを入力させて、SQL文の条件(WHERE)の部分を「WHERE user='(入力されたユーザ名)' AND password='(入力されたパスワード)'」と展開するとします。このとき入力されたユーザ名が「」、パスワードが「' OR 'a'='a'」だとすると、条件部分は「WHERE user='' AND password='' OR 'a'='a''」となり、常に条件が成立してしまうことになります。この結果、データベースの改ざん、重要なデータが削除される、情報の漏洩などのさまざまな被害が発生してしまいます。 SQLインジェクションを防ぐ方法としては、入力文字列が正当なものであるかをチェックすることなどがあげられます。