SQL Injectionとは、アプリケーションにおいてRDBで任意の値を検索条件、更新内容等に使用する場合に、任意のSQL文を実行させてしまう手法です。これは、Webアプリケーションに限らず、RDBを使用しているクライアント・サーバー型のアプリケーションでも発生する可能性があります。
この攻撃手法を悪用することで、ユーザーは開発者、運用管理者が予期しないようなSQL文を発行し、RDBを自由に操作することが出来るようになります。つまり、データの削除、追加、改ざん、取得といったことから、RDBMSによってはDBサーバーでOSコマンドすら実行できるようになってしまいます。
特に昨今のWebサービスでは背後にRDBがおかれ、個人情報など重要な情報がRDBに格納されていることが非常に多くなっています。このため、SQL Injectionに対策することは重要です。
インジェクション対策
SQLインジェクションの対策として最も代表的なものが PreparedStatementクラスの利
用です。PreparedStatement を利用した場合、ユーザーからの入力値はバインド変数とな
るため、SQL 文の構文を確定させることが出来ます。
記号を打ったとしても、値でしか返さない。