0

SQL インジェクションを防ぐために生のクエリを準備する方法に関するベスト プラクティスはありますか? 私のコードは次のようになります(たとえば、単純化されています-実際のクエリはより複雑であるか、Fluent APIを使用するだけです):

$start = Input::get('start');
$end = Input::get('end');

$query = 'SELECT * FROM `readings` ';
$query .= "WHERE `date` BETWEEN '".$start."' AND '".$end."' ";

$readings = DB::Connection('customer')->first($query);

上記の SQL インジェクションのリスクを回避するにはどうすればよいですか?

(注 - 上記のコードは Laravel 3 用ですが、同等の概念が Laravel 4 にも適用されます)。

4

2 に答える 2

0

SQL インジェクションを防ぐには、文字列をパラメーターとして使用する代わりに、ドメイン (データ型) でパラメーターを使用する必要があります。おそらく最も簡単な方法は、ORM またはストア プロシージャを使用することです。なんで?プレーン文字列をパラメーターとして使用している場合、クライアントはパラメーターに任意の値を入力して、SQL インジェクションで攻撃できるためです。

于 2013-07-01T10:09:56.347 に答える
0

SQL インジェクションを防ぐために準備済みステートメントを使用する

Laravel の場合、クエリビルダーhttp://four.laravel.com/docs/queriesを使用します

$readings = DB::table('readings')
                    ->whereBetween('date', array($start, $end))->get();
于 2013-07-01T09:52:29.170 に答える