SQLインジェクションの脆弱性を狙った攻撃パターンの対策


多層防御の考え方から、Webアプリケーション上の対策にとどまらず、WebサーバやOSといったプラットフォーム上の対策、WAF(Web Application Firewall)やIPS(Instrusion Preventio System)による通信経路上の対策を講ずることが大切です。


SQLインジェクションの攻撃に対して最も効果的なのは、バインド・メカニズムを利用したWebアプリケーション上の対策を講ずることです。バインド・メカニズムとは、SQL文中のリテラル値(定数)が入る個所をプレース・ホルダー(バインド定数)に置き換えたSQL文をあらかじめ用意しておき、あとからプレース・ホルダーに値を割り当ててSQL文を実行する機能です。

例えば以下の文があった場合、「@userid」「@password」がプレース・ホルダーになります。

SELECT userid FROM users WHERE userid=@userid AND password=@password


f:id:itochu:20081209012101p:image