使用DB :: Raw

时间:2016-10-31 10:36:57

标签: php mysql laravel-4

我在Laravel中真的很新,我不确定如何通过使用SQL Injections的{​​{1}}查询来保护我。我已经阅读了低谷documentation并且我已经阅读过那种不安全的信息,应该加以保护,因为它在查询中作为字符串注入...

  

这些表达式将作为字符串注入到查询中,因此请注意不要创建任何SQL注入点

Myquery看起来像这样

DB::Raw

查询只在页面上显示包含产品的类别。

1 个答案:

答案 0 :(得分:1)

如果有通过 $ _ GET ['foo'] $ _ POST ['bar'] 发送的数据,则通常会发生sql注入风险网络用户。您应该通过将数据绑定到原始查询来保护数据库免受SQL注入,如下所示:

$risky_input=$_GET['some_risky_input'];//assuming this comes from an input field
$result=
DB::select(
    DB::raw("SELECT * FROM category WHERE category_name=:queriedterm ")
    ,['queriedterm'=>$risky_input]//binds data throuhg array
    )
;

请注意冒号“:”及其旁边的变量。这样可以保护您的查询免受sql注入。

注意:您的查询没有任何错误注入风险,因为它不包含Web用户填写的任何文本输入字段中的参数。