連載
» 2004年01月01日 10時00分 公開

セキュリティ用語事典:SQLインジェクション

SQL Injection

[@IT]

 入力値チェックが不十分な入力フォームに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)を併用することでより高いセキュリティを実現することができる。

関連用語

クロスサイトスクリプティング
Webアプリケーションファイアウォール

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。