我在Eloquent中使用Laravel 4。当我得到用户输入时,我只使用$name=Input::get('name')
,然后执行$a->name=$name;
我不知道函数Input::get
是否可以保护我免受SQL Injection和XSS的侵害。如果没有,我该怎么做才能清理输入?
而且,当我在视图中显示该值时,应使用{{$a}}
还是{{{$a}}}
问候和感谢。
Laravel使用PDO的参数绑定,因此您不必担心SQL注入。不过,您应该阅读this。
Input :: get()不过滤任何内容。
三花括号与e()和HTML :: entities()的作用相同。它们全部都调用具有UTF-8支持的htmlentities:
htmlentities($your_string, ENT_QUOTES, 'UTF-8', false);
您应该使用{{{$a}}}
,因为例如Input可以具有HTML标记。 Laravel不会对其进行过滤。
为了避免SQL注入,您应该使用绑定参数来运行查询,例如:
$var = 1;
$results = DB::select('select * from users where id = ?', array($var));
而不是:
$results = DB::select('select * from users where id = '.$var);