关于php:我是否需要清理用户输入Laravel

Do I need to sanitize the user input Laravel

我正在使用Laravel 4和Eloquent。
当我得到用户输入时,我只使用$name=Input::get('name')然后我做$a->name=$name;

我不知道函数Input::get是否保护我免受SQL注入和XSS的攻击。 如果没有,我需要做些什么来消毒输入?

而且,当我在视图中显示值时,我应该使用{{$a}}还是{{{$a}}}

问候和感谢。


Laravel使用PDO的参数绑定,因此SQL注入不是你应该担心的。 你应该读这个。

Input :: get()不会过滤任何内容。

三个花括号与e()和HTML :: entities()相同。 所有这些都称为支持UTF-8的htmlentities:

1
htmlentities($your_string, ENT_QUOTES, 'UTF-8', false);


您应该使用{{{$a}}},因为例如Input可以包含HTML标记。 Laravel不会过滤它。

要避免SQL注入,您应该使用绑定运行查询的参数,例如:

1
2
$var = 1;
$results = DB::select('select * from users where id = ?', array($var));

并不是:

1
$results = DB::select('select * from users where id = '.$var);