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

时间:2014-10-05 12:44:59

标签: php laravel eloquent xss sql-injection

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

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

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

问候和感谢。

4 个答案:

答案 0 :(得分:10)

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

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

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

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

答案 1 :(得分:4)

您应该使用{{{$a}}},例如输入可以包含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 :(得分:0)

您可以使用

  

https://github.com/Waavi/Sanitizer

这是一个易于使用的可变库。

答案 3 :(得分:0)

是的,您一直需要将干净的数据保存在数据库中,因为我曾经使用过 HTML Purifier

HTML Purifier是用HTML编写的符合标准的HTML过滤器库 PHP。 HTML Purifier不仅会删除所有恶意代码(更好 称为XSS),并经过全面审核,安全但允许 白名单,这还将确保您的文档是标准的 符合标准,只有具备以下方面的全面知识才能实现 W3C的规格。由于当前的使用厌倦了使用BBCode 缺乏或不安全的HTML过滤器的前景?拥有所见即所得的编辑器 但从未能够使用它?寻找高品质, 适用于该应用程序的符合标准的开源组件 你正在建造? HTML Purifier适合您!

对于Laravel项目,您可以使用此服务提供商https://github.com/mewebstudio/purifier在项目中包含 HTMLPurifier