0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

CakePHPのSQLインジェクション対策(between使用時にハマった)

Last updated at Posted at 2020-11-11

ハマったこと

  • getパラメータで受け取った値を、SQLの検索条件に使いたかった。(緯度・経度から、近くのお店を表示する機能)
  • でも$q->between('パラメータを使った計算式', 0, 1)って書くと、エスケープされないことに気づいた。

原因

cakeのORMを使うと、左辺はエスケープされないみたい。

対策

いろいろ考えましたが、良い感じにエスケープするのは出来ませんでした。
その代わりに、パラメータを変数に入れるときに正規表現でチェックをしました。

$latitude = preg_match('パターン', $query['latitude']) ? $query['latitude'] : '';

$query['latitude']にdelete ~~~みたいな恐ろしいことを書かれても、とりあえず大丈夫だと思う。

もっと良い方法があったら教えて下さい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?