SQLインジェクションはWebアプリケーションのデータベース操作の脆弱性を悪用した攻撃です。 悪意ある SQL 文をフォームや URL に挿入することで、データベースを不正に操作します。 OWASP Top 10に長年ランクインし続ける最も危険なWeb攻撃の一つです。
Webアプリケーションはユーザーからの入力をもとにSQLクエリを組み立ててデータベースにアクセスします。 SQLインジェクションはこの入力値の検証が不十分な場合に、攻撃者が意図しないSQLコマンドを 注入(インジェクション)できてしまう脆弱性です。
ログインフォームを例に、SQLインジェクションの仕組みを説明します。
'1'='1' は常にTRUEのため、WHERE句全体がTRUEになりパスワードなしでログインできてしまう自分のWebアプリケーションにSQLインジェクションの脆弱性がないか確認するためのツールと手法です。
SQLインジェクションは1990年代から存在する古典的な攻撃ですが、現在も最も多く悪用されるWeb攻撃の一つです。 プリペアドステートメントを使うだけで大部分の攻撃を防げるにもかかわらず、 未対策のサイトが後を絶ちません。 Webアプリケーション開発者にとって、SQLインジェクション対策は基本中の基本です。