SQLインジェクションとは?

利用者から入力を受け付けるウェブアプリケーションがデータベースと連携してサービスを行っている場合に、セキュリティ上の問題になりうるもの。
データベースに対する問い合わせデータの中に、意図的にSQL文を混ぜ込んでおき、データベース内部でそのSQLコマンドを不正に実行させ、情報を盗み出したりシステムに被害を及ぼしたりすること。
●影響
データベース内で、管理者が意図しないSQLコマンドを実行されてしまうため、データの不正閲覧、パスワード情報の盗難、データの改ざん、データの破壊、そのたコマンドの不正実行をされる恐れがある。
●対策
(開発時)
・ユーザが入力可能な値を厳密に定義
・不正入力値の無害化
・準備済みSQL文の使用(バインドメカニズム)
(運用時)
・エラーメッセージを出さない
・ウェブアプリケーションが持つ権限の最小限化
・ウェブアプリケーションのパスワードの秘匿
・実行可能なコマンドの制限
・アクセスログの取得および解析
・ウェブアプリケーションファイアウォールの導入