IPAから「安全なSQLの呼び出し方」というドキュメントが公開された。
http://www.ipa.go.jp/security/vuln/press/201003_websecurity_sql.html
開発者にとって無駄がなく、何を実施すればよいのかがすぐにわかる。よいと思った。
このドキュメントには、SQLインジェクションについて、原理から説明されている。現実の開発では(特に最近は)、いかに安く構築するかが重要な課題であるため、単価のより安い開発者に、詳細設計や実装をお願いせざるを得ない状況が多い。もちろんコーディング規約などは作成するが、ルールを作成したところで、内容が理解できていなければ遵守は難しい(はなから守らないか、守り方を間違えるか)。そんな中、実装者に対する教育コンテンツとして活用できる。
また、このドキュメントには、MySQLにおけるプリペアドステートメントの実装の問題(ドキュメント中では総称して「動的プレースホルダ」と呼んでいる)や、文字コードに関する問題について整理されている(どういうケースで、どういう対策が必要であるかが整理され、コンパクトにまとまっている)。これらの情報は、分散しつつも広く公開されていたため、情報セキュリティに関心がある開発者であれば、収集し、ある程度の整理ができていただろう。しかし、中小規模の開発案件で、そのような開発者が体制上に存在することは稀である(少なくとも自分の周囲では)。そんな中、(いたずらに混乱を招かず)即利用できることは価値がある。
まぁ、ここ数年Javaで開発しているけれど、PreparedStatementインターフェースって、長いこと見ていない気がするw