我是否需要清理用户输入Laravel

Fyl*_*lux 9 php xss sql-injection laravel eloquent

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

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

并且,当我在我的视图中显示价值时,我应该使用{{$a}}{{{$a}}}

问候和感谢.

cha*_*cha 11

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

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

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

htmlentities($your_string, ENT_QUOTES, 'UTF-8', false);
Run Code Online (Sandbox Code Playgroud)

  • 转义输出,而不是输入. (2认同)
  • 除非您实际使用它,否则无需更改数据.过滤输入,转义输出. (2认同)

Mar*_*łek 5

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

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

$var = 1;
$results = DB::select('select * from users where id = ?', array($var));
Run Code Online (Sandbox Code Playgroud)

并不是:

$results = DB::select('select * from users where id = '.$var);
Run Code Online (Sandbox Code Playgroud)