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

问题描述 投票:9回答:3

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

我不知道函数Input::get是否可以保护我免受SQL Injection和XSS的侵害。如果没有,我该怎么做才能清理输入?

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

问候和感谢。

php laravel eloquent xss sql-injection
3个回答
11
投票

Laravel使用PDO的参数绑定,因此您不必担心SQL注入。不过,您应该阅读this

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

三花括号与e()和HTML :: entities()的作用相同。它们全部都调用具有UTF-8支持的htmlentities:

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

4
投票

您应该使用{{{$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);

0
投票

您可以使用

https://github.com/Waavi/Sanitizer

这是各种坚固易用的库。

© www.soinside.com 2019 - 2024. All rights reserved.