SQLインジェクション

SQL Injection

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

Security&Trust フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

アイティメディアの提供サービス

TechTargetジャパン

キャリアアップ

@IT Sepcial
- PR -
@IT Sepcial
ソリューションFLASH