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 注入

对于 Laravel,使用查询构建器http://four.laravel.com/docs/queries

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

为了防止 SQL 注入,您应该使用带域(数据类型)的参数,而不是使用字符串作为参数。可能最简单的方法是使用 ORM 或存储过程。为什么?因为当您使用纯字符串作为参数时,客户端可以在参数中输入任何值并使用sql注入攻击您!

于 2013-07-01T10:09:56.347 回答