(SQL injection)
Webアプリケーションの弱点を悪用し、アプリケーションの開発者が予想できなかったSQL構文が実行されるようにすることで、データベースを非正常的に操作する攻撃です。
SQL(Structured Query Language)は、主にWebアプリケーションがデータベースに掲示物を保存し、オープンする過程で使用されます。この際、ハッカーがSQL構文の挿入(Injection)課程で、特別製作されたデータを入力してインタープリターを騙し、彼が望むSQLクエリー構文を実行するように攻撃することがSQLインジェクションです。
SQLインジェクション攻撃によって、ハッカーが任意のデータを生成して読み、更新して削除することが可能となります。 最悪の場合、アプリケーションを完全に損傷させ、システムをダウンさせることもできます。
政府関連機関が提案するSQLインジェクション対応方法は下記と同じです。
1) 悪意的な挿入が容易に起こる動的SQLの使用を慎むべきです。
2) 安全なWebサイトを設計し、実装しなければなりません。入力値ごとに適切な検証手続きを適用して、危険な入力値はそうではない値に置き換えて、入力値が許容範囲内にあるか検査するなどの事前措置を行います。
3) データベースのエラーメッセージを露出してはいけません。エラーメッセージを通じて重要なデータが露出する場合が多いからです。
4) WAFを使用しなければなりません。WAFは常時に問題が発生し、アプリケーションを修正している間にもWebサイトを守ってくれます。
5) Webセキュリティの脆弱性を周期的に点検しなければなりません。いくら安全に設計して実装されたWebサイトにも、セキュリティの問題は残っているかもしれないので、日常的に点検して診断する過程が必要です。
(出典:SQL Injection Basic「何? ppomppuがSQLインジェクションに崩れたと?」)