如何防止Laravel中的SQL注入?

gus*_*ans 15 laravel-4

在我的控制器中,我有这个代码:

public function create($brand_id)
{
    Brand::findOrFail($brand_id);
}
Run Code Online (Sandbox Code Playgroud)

还有这个:

public function search() 
{
    $q = Input::get('q');
    $brands = Brand::where('title', 'LIKE', '%'.$q.'%')->take(80)->get();
Run Code Online (Sandbox Code Playgroud)

这段代码安全吗?"安全"我的意思是SQL注入安全.或者我应该在这里做一些变量清理?清理用户输入的最佳方法是什么?非常感谢帮助我:)

Mas*_*Bee 22

是Eloquent在场景后面使用参数绑定,它可以安全地转义where()中使用的任何输入.

  • 但是在使用带有查询构建器的原始语句时,它不会保护您. (6认同)
  • @OkiemuteOmuta嗯,如果它不安全你能提供一个例子吗?因为文档说明:注意:Laravel查询构建器始终使用PDO参数绑定来保护您的应用程序免受SQL注入攻击.无需清除作为绑定传递的字符串. (4认同)

小智 6

文档说 Eloquent 在幕后处理这个,但你也可以使用 like DB::escape($q)来保证安全

  • 如果它说它确实如此,并且代码显然证明它确实如此,那么这不是不必要的开销吗?您已经处于更安全的一侧。 (2认同)