Orm Symfony/doctor中的SQL注入

Orm Symfony/doctor中的SQL注入,orm,symfony,doctrine-orm,sql-injection,Orm,Symfony,Doctrine Orm,Sql Injection,使用参数而不是直接在查询字符串中放置值是为了防止SQL注入攻击,应始终: 这是否意味着如果我们使用这样的参数,我们将始终受到SQL注入的保护?在使用表单(FOS注册表单)时,我将eduardo放在了一起,并将其与标签一起保存到数据库中。我真的不明白为什么使用参数会阻止SQL注入 为什么标签会像这样持久化到数据库中?有没有办法通过使用Symfony的验证组件来删除标签 在Symfony中将数据持久化到数据库中之前,我们是否应该使用一般提示或方法?如果在创建请求时使用参数而不是串联,则程序能够区分S

使用参数而不是直接在查询字符串中放置值是为了防止SQL注入攻击,应始终:

这是否意味着如果我们使用这样的参数,我们将始终受到SQL注入的保护?在使用表单(FOS注册表单)时,我将
eduardo
放在了一起,并将其与标签一起保存到数据库中。我真的不明白为什么使用参数会阻止SQL注入

为什么标签会像这样持久化到数据库中?有没有办法通过使用Symfony的验证组件来删除标签


在Symfony中将数据持久化到数据库中之前,我们是否应该使用一般提示或方法?

如果在创建请求时使用参数而不是串联,则程序能够区分SQL关键字和值。因此,它可以安全地转义可能包含恶意SQL代码的值,以便不会执行此恶意代码,而是像它应该的那样存储在字段中

HTML代码注入是另一个问题,它与数据库无关。通过使用自动输出转义来显示值时解决此问题,该转义将显示
eduardo
,而不是eduardo。这样,任何恶意的js/html代码都不会被解释:它将被显示。

从阅读开始

当输入到SQL中的值改变查询时,就会发生SQL注入攻击。结果,查询执行了它打算执行的其他操作

例如,使用edouardo'或'1'='1作为值,将导致:

WHERE p.name > 'edouardo' OR '1'='1'
(因此该条件始终为真)

“eduardo”是一个完全有效的值。在某些情况下,您可能希望将其保存为已提交(例如内容管理系统)。当然,当您从数据库中获取HTML并直接输出时,它可能会破坏HTML。这应该由模板引擎解决(细枝将自动转义)


如果您希望在将数据从表单传递到实体之前对其进行处理,请使用。

eduardo
中您在哪里看到SQL?感谢gregoire,现在一切都有意义了感谢Jakub,我现在看到2之间的区别了。非常感谢。
WHERE p.name > 'edouardo' OR '1'='1'