入力値チェックが不十分な入力フォームにSQL片を挿入(Injection)することにより、意図しない出力を行わせるような手法。
例えば、ユーザーIDとパスワードが入力されるような画面において、入力値をそのままSQLに渡しているとすると、
SELECT * FROM user WHERE userid='$input_userid' AND password='$input_password';
の入力値としてパスワードに「'or'A'='A」を入力することにより、
SELECT * FROM user WHERE userid='USERID' AND password=''or'A'='A';
と、表の全件が走査されるようにSQLが偽造されてしまう。
対策としては、入力値チェックをサーバ側で行うこと、また入力された文字の中にRDBMSが利用する特殊文字が含まれているかの確認と、その除去/無害化の処理を行うことが挙げられる。さらにWebアプリケーションファイアウォール(WAF)を併用することでより高いセキュリティを実現することができる。
関連用語
Copyright © ITmedia, Inc. All Rights Reserved.