『よくわかるPHPの教科書』の著者 徳丸浩氏のブログを参考にして、「SQLインジェクション対策」を理解するときに読むべき記事を自分用にまとめました。
・参考:「SQLインジェクション対策」でGoogle検索して上位15記事を検証した - ockeghem(徳丸浩)の日記
まず、上記記事のまとめ部分から抜粋。
- SQLを動的に組み立てない
- SQLのパラメータ指定には静的プレースホルダを用いる
この2つを守っている限り、アプリケーションやSQL呼び出しライブラリなどにバグがあっても、原理的にSQLインジェクション脆弱性は発生しません。
SQLインジェクションについて書くときに以下のメッセージを必ず含めて欲しいです。引用元:[SQLインジェクション対策]Webアプリケーションとかの入門本みたいのを書く人への心からのお願い。 - *「ふっかつのじゅもんがちがいます。」withぬこ
- 単にプリペアドステートメントを使え
- 絶対に文字列結合でSQLを構築しようとしてはいけない
- IPAの「安全なSQLの呼び出し方」を読むこと
プリペアドステートメントって何?って方はココら辺に分かりやすく書いてあるのでおすすめ。
・プリペアドステートメント - データベース接続(PEAR::DB) - PEAR入門
・PHP: プリペアドステートメントおよびストアドプロシージャ - Manual
以下、「SQLインジェクション対策」を理解するときに読みたい記事たち。
・初心者向け:[SQLインジェクション対策]Webアプリケーションとかの入門本みたいのを書く人への心からのお願い。 - *「ふっかつのじゅもんがちがいます。」withぬこ
・中級者向け:PHPでのSQLインジェクション対策 - エスケープ・クォート編 — Let’s Postgres
基本を抑えたら、IPAの「安全なSQLの呼び出し方」を読む。
・情報処理推進機構:情報セキュリティ:脆弱性対策:安全なウェブサイトの作り方
以上です。