Mysql 是否可以使用存储过程执行sql注入?

Mysql 是否可以使用存储过程执行sql注入?,mysql,stored-procedures,sql-injection,mysql-5.1,Mysql,Stored Procedures,Sql Injection,Mysql 5.1,我看到一些类似的问题,没有关于mysql的… 有没有办法将sql注入SP? 如何在SP级别上防止此问题? 换句话说,SP内部的查询结构是否可以通过传入参数以任何方式修改? 如果我向存储过程发送参数“1;从用户中删除--” 查询是: select * from T where = @p SQL注入基本上就是向查询中添加额外的代码。攻击本身之所以发生,是因为服务器将输入数据解析为SQL代码并相应地执行。您无法在SP级别对其进行保护,因为当执行到达过程时,攻击已经成功 因此,只要将查询构造为文本,不

我看到一些类似的问题,没有关于mysql的…
有没有办法将sql注入SP? 如何在SP级别上防止此问题?
换句话说,SP内部的查询结构是否可以通过传入参数以任何方式修改?
如果我向存储过程发送参数“1;从用户中删除--” 查询是:

select *
from T
where = @p

SQL注入基本上就是向查询中添加额外的代码。攻击本身之所以发生,是因为服务器将输入数据解析为SQL代码并相应地执行。您无法在SP级别对其进行保护,因为当执行到达过程时,攻击已经成功


因此,只要将查询构造为文本,不管查询的文本是什么,SQL注入都是可能的。如果您没有,或者您正确地清理了输入,那么不管是SELECT还是其他什么,SQL注入都不应该是问题。

SQL注入基本上是向查询添加额外的代码。攻击本身之所以发生,是因为服务器将输入数据解析为SQL代码并相应地执行。您无法在SP级别对其进行保护,因为当执行到达过程时,攻击已经成功


因此,只要将查询构造为文本,不管查询的文本是什么,SQL注入都是可能的。如果您没有,或者您正确地清理了输入,那么不管是SELECT还是其他什么,SQL注入都不应该是问题。

您的编程介质是什么?如果您担心sql注入会直接发生,那么防止sql注入是多余的。@Brian Graham-我使用PHP,您的意思是最好的方法是通过PDO进行清理?假设UI是一个web界面,您会对输入字段进行html编码或javascript编码。如果它是一个桌面应用程序,你可以做类似的事情,我会想象。如果您担心来自存储过程本身的sql注入,那么这是一个完全不同的问题。在将变量传递到sql命令之前,可以编写一些自定义正则表达式并运行这些变量。您的编程介质是什么?如果您担心sql注入会直接发生,那么防止sql注入是多余的。@Brian Graham-我使用PHP,您的意思是最好的方法是通过PDO进行清理?假设UI是一个web界面,您会对输入字段进行html编码或javascript编码。如果它是一个桌面应用程序,你可以做类似的事情,我会想象。如果您担心来自存储过程本身的sql注入,那么这是一个完全不同的问题。在将变量传递给sql命令之前,可能会编写一些自定义正则表达式并运行这些变量。实际上,这是一个很好的答案。如果在存储过程中通过
CONCAT()
ing来自参数(或其他外部源)的字符串创建查询,则此SP易受注入攻击。否则你就安全了。事实上这是一个很好的答案。如果在存储过程中通过
CONCAT()
ing来自参数(或其他外部源)的字符串创建查询,则此SP易受注入攻击。否则你就安全了。