閲覧ありがとうございます。
CakePHPにおけるサニタイズ処理について質問させてください。
表題の通り、$this->query()に独自SQLを渡す際にPrepared Statementを利用したところ、
LIKE句など文字列を渡す部分については正常に動いたのですが、
LIMITやOFFSET句など数値型でバインドする必要のある部分でエラーが発生しました。
調べたところ、PDOのbindValue()はバインドする値が強制的に文字列に変換されてしまい、
それを防止するためにはbindValue()の第三引数にPDO::PARAM_INTを指定することで、
数値型をバインドさせることができるようです。
しかし、CakePHPのリファレンスに記載されている$this->query()メソッドの項にはそれらしき引数が見当たりません。
大人しくCakePHPのO/Rマッパー(find)を使えよ、という話ですが、
SQLが非常に複雑なため、なるべくアソシエーションにコストを割くことは避けたいのが現状です。
苦肉の策として、
「数値が入ることが確定しているのだから、数値型であることをバリデーションチェックした変数をSQL内に展開する」
という策を思いつきましたが、当方サーバーサイド初心者であるため、SQLインジェクション対策となっているかどうか不安です。
上記の件についてどなたかご教授いただけますと幸いです。
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/11/10 05:53