2014年3月18日火曜日

SQLインジェクション

インジェクション調べる
http://npnl.hatenablog.jp/entry/20080412/1207965105

自己流のSQLインジェクション対策は危険
http://blog.tokumaru.org/2013/02/security-measures-of-own-way-are-unsafe.html
SQLインジェクション対策の「究極形」に従うことを強く推奨します。それは下記のとおりです。
文字列連結(sprintf等を含む)を用いてSQL文を組み立てない
静的プレースホルダを用いてSQL文にパラメータを割り当てる
データベース接続時に文字エンコーディングを指定する

Like 句に対する SQL インジェクション対策(ASP.NET,C#, VB.NET 編)
http://www.websec-room.com/2013/12/15/1307
SQL インジェクションは、プレースホルダを利用することで対策が可能ですが、Like 句のワイルドカードついては、ほとんどの情報元が「別途エスケープが必要です」としか記載されていません。
 %   0個以上の文字
 _    1文字
 []   []内に指定した任意の文字
ESCAPE 句を使用することにより、% _ [ を簡単にエスケープできるようになります。
WHERE field LIKE @Parameter ESCAPE 'エスケープ記号として使用する文字'
このエスケープの仕様はSQL Server,Oracle,DB2等、メジャーなDBではみんな同じらしい。

0 件のコメント:

コメントを投稿