我正在使用Laravel 4和Eloquent . 当我得到用户输入时我只使用 $name=Input::get('name') 然后我做 $a->name=$name;
$name=Input::get('name')
$a->name=$name;
我不知道函数 Input::get 是否保护我免受SQL注入和XSS的攻击 . 如果没有,我需要做些什么来消毒输入?
Input::get
并且,当我在我的视图中显示值时,我应该使用 {{$a}} 或 {{{$a}}}
{{$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);
2 回答
Laravel使用PDO的参数绑定,因此SQL注入不是你应该担心的 . 你应该阅读this .
Input :: get()不会过滤任何内容 .
三个花括号与e()和HTML :: entities()相同 . 所有这些都称为支持UTF-8的htmlentities:
您应该使用
{{{$a}}}
因为例如Input可以有HTML标记 . Laravel不会过滤它 .要避免SQL注入,您应该使用绑定运行查询的参数,例如:
并不是: