Mysql 为什么人们说使用存储过程有可能减少SQL注入攻击?

Mysql 为什么人们说使用存储过程有可能减少SQL注入攻击?,mysql,sql,sql-injection,Mysql,Sql,Sql Injection,由于我们还需要从用户那里获取输入,它还可以接受SQL注入吗?我认为您把存储过程和预处理语句混淆了 在使用准备好的语句时,可以参数化传递给语句的值,从而消除了通过SQL注入实际更改为基本查询结构的能力 存储过程仍然容易受到注入攻击,这取决于过程本身内部发生的情况。您应该使用PDO来保护您的请求 更多信息请点击此处: PDO会对这些声明进行预先准备的语句任何引用?不太可能是这样,但通过参数化值调用查询或存储过程的方式有助于减少sql注入。请参阅此处了解更多详细信息:实际上,我想我也听到过关于存储过程

由于我们还需要从用户那里获取输入,它还可以接受SQL注入吗?

我认为您把存储过程和预处理语句混淆了

在使用准备好的语句时,可以参数化传递给语句的值,从而消除了通过SQL注入实际更改为基本查询结构的能力


存储过程仍然容易受到注入攻击,这取决于过程本身内部发生的情况。

您应该使用PDO来保护您的请求
更多信息请点击此处:


PDO会对这些声明进行预先准备的语句

任何引用?不太可能是这样,但通过参数化值调用查询或存储过程的方式有助于减少sql注入。请参阅此处了解更多详细信息:实际上,我想我也听到过关于存储过程的类似声明。这当然不会让我感到惊讶,即使它是错的:一个合法的“X是更好的Y”模因一出现,人们就会不顾一切地声称它也解决了它实际上没有解决的问题,这是很常见的。问题实际上是存储过程中发生的事情。如果您基本上像使用参数化的prepared语句一样使用存储过程,那么就可以了。但是,如果您实际上是通过串联参数值在过程中动态构建查询,那么您会遇到与在存储过程外部使用串联查询相同的问题。