Php 使用Symfony清除POST并获取变量

Php 使用Symfony清除POST并获取变量,php,security,symfony,input,request,Php,Security,Symfony,Input,Request,我使用的是Silex,它使用来自Symfony的组件Request。 当我从表单中获取数据时,例如: $params = $request->request->all(); 没有东西是干净的。与Laravel不同,Laravel自动清理用户输入数据。我应该用内置的PHP函数(如strip\u tag)手动完成吗?或者有一个symfony方法来完成 所以基本上,当涉及到清理输入时,它不应该是请求的一部分。这是因为,经过净化的输入实际上只是数据库安全性的一部分 因此,输入在传递给条令时

我使用的是Silex,它使用来自Symfony的组件
Request
。 当我从表单中获取数据时,例如:

$params = $request->request->all();

没有东西是干净的。与Laravel不同,Laravel自动清理用户输入数据。我应该用内置的PHP函数(如
strip\u tag
)手动完成吗?或者有一个symfony方法来完成

所以基本上,当涉及到清理输入时,它不应该是请求的一部分。这是因为,经过净化的输入实际上只是数据库安全性的一部分

因此,输入在传递给条令时会被条令净化。基本上,条令会自动确保所有输入都经过消毒。从广义上讲,数据库抽象层负责确保传递给它的数据是有效的

推进也是如此

所以我要说的是,输入清理不是请求对象的责任,所以它不提供这样做的功能。这符合单一责任原则,您可以在此处了解更多:

如果要验证通过请求接收的数据,可以使用Validator组件进行验证,还可以使用Silex ServiceProvider:

TLDR;
清除输入不是请求的责任,而是DBAL(数据库清除层)的责任。

清除是什么意思?删除危险代码?你的表单是什么样子的?我的表单只是一个普通的HTML表单,带有输入字段。通过清理数据,我指的是删除HTML和JavaScript。谢谢你的回答,我正在使用propel2作为ORM,我不知道它是否在存储之前清理数据,以避免SQL注入。例如,据我所知,Prope2在这方面确实是安全的,因为它使用预处理语句。我已经更新了我的答案,包括这一点,请检查它是否正确回答了您的问题:)除了数据库隔离层之外,必须对输入进行清理,因为存在攻击向量,这些攻击向量可以攻击站点,甚至不在数据库中保存信息。您是正确的,我错误地假设范围只包括传递到数据库的输入,在其他情况下,责任将由使用用户输入的人承担,但仍然不是请求的一部分。