SQLインジェクション対策やエラー処理

プログラム改修でよく目にするのが、簡易SQLインジェクション対策でシングルクオーテーションで
値を囲っていても、数値項目や値の範囲チェックをしていない事が多くある。

ご存知のようにシングルクオーテーションだけでは不十分です(詳細なパターンは多くのサイトで
解説されているので検索してみてください)。

DBアクセスでSQL発行する場合にはSQL構築の前に、

1.数値項目はは、数値チェックを行う。
  (数値カラムで許容される範囲チェックも)

2.カラム設定で許容される範囲の文字列長チェックも行う。
 ここはインジェクションとは関係ないので、ほとんどの場合はDB自動カットされてもいいので
 チェックしませんが、エラー処理としては意識する事は大事です。

3.エラーが無ければ最後にすべての値に対してエスケープ処理を行う。
 エスケープ処理はDBのライブラリーで提供されている信頼ある関数なりクラスなりを
 利用する。

4.最後に、すべてのカラムに対する値をシングルクオーテーションで囲ってセットする。

と、これで穴(セキュリティーホール)は無いはずですが・・・

PCMやDSD等の音源データの各種フォーマット変換を行った後に、それが厳密に正しく
変換処理されているかを調べるよりは、簡単です。
(あれ、意味が違うか・・・)