データベースと連動したWebサイトで、データベースへの問い合わせや操作を行うプログラムにパラメータとしてSQL文の断片を与えることにより、データベースを改ざんしたり不正に情報を入手する攻撃です。また、そのような攻撃を許してしまうプログラムの脆弱性のことです。
多くのWebアプリケーションではデータベースの操作にSQLという言語を利用しており、ユーザがフォームから送信した検索語などのパラメータを受け取り、これをSQL文に埋め込んでデータベースへの問い合わせや操作を行います。このとき、SQL文の断片として解釈できる文字列をパラメータに含めることで、プログラムが想定していないSQL文を合成し、不正にデータベースの内容を削除したり、本来アクセスできない情報を表示させたりすることができてしまう場合があります。このような攻撃手法をSQLインジェクションといいます。「インジェクション」(injection)とは「注入」という意味です。
SQLインジェクションはパラメータをSQL文に埋め込む際にきちんとチェックが行われていないために起こります。パラメータ中にSQL構文やSQL文で特殊な意味を持つ文字が含まれていないか調べ、含まれていた場合はこれを削除したり別の文字列に変換(エスケープ)するといった処理を組み込む必要があります。