我有点困惑,只为Laravel安装了XSS Filter Package。 就像我在文档中提到的那样,我启用了自动过滤功能。
但是当我使用以下代码处理表单输入时:
$input = Input::all();
$validation = Validator::make($input, Comment::rules());
// do some validation
// not passed:
return Redirect::back()
->withErrors($validation)
->withInput();
比"坏"代码传递回表单。为了测试,我添加了
->withInput($input);
现在"坏"代码已过滤。
现在问我为什么?当我没有将输入传递给它时,withInput的来源是什么?
答案 0 :(得分:2)
这是具有输入功能的laravel -
public function withInput(array $input = null)
{
$input = $input ?: $this->request->input();
$this->session->flashInput($input);
return $this;
}
你可以看到它检查input
变量是否为null然后运行一个函数来获取所有输入。
以下包不会覆盖request-> input()函数,然后它不会对它产生任何影响。
您应该将其保留为默认值,因为您的用户不希望看到他们的数据被转义为您应该在幕后执行的操作,除非您知道自己在做什么。