■ はじめに
Wise men learn by other men's mistakes; fools by their own
https://dk521123.hatenablog.com/entry/2016/07/02/212547
の続き。 SQLインジェクション(SQL Injection, Injection:混入) について、学ぶ
■ SQLインジェクションとは?
* SQL命令に不正なパラメータを引き渡すことで、 開発者が意図していなかったSQLが生成・実行できてしまうこと
■ サンプル
... = "SELECT * FROM userTable WHERE userID = '" + userID + "' AND password = '" + password + "';";
解説
で、入力値に「mike」「' OR '1'='1」と入力すると、 SELECT * FROM userTable WHERE userID = 'mike' AND password = '' OR '1'='1' となり、ORの後は常に真なので、パスワードが異なるにもかかわらず認証されてしまう。
■ 対策
* SQL文の組立てに静的プレースホルダを使用する
参考資料
http://www.atmarkit.co.jp/fsecurity/column/ueno/42.html
以下の動画は、分かりやすく解説している
http://www.youtube.com/watch?v=9fXzaMACldo&feature=related
http://www.youtube.com/watch?v=Hagwm9F6TDo&feature=related
関連記事
SQL アンチパターン ~ 目次 ~
https://dk521123.hatenablog.com/entry/2016/07/02/212547
セキュリティ攻撃一覧
https://dk521123.hatenablog.com/entry/2011/07/19/110702