Php 使用quoteInto后,我是否可以避免SQL注入?

Php 使用quoteInto后,我是否可以避免SQL注入?,php,mysql,zend-framework,sql-injection,Php,Mysql,Zend Framework,Sql Injection,您好,我在下面的查询中使用了quoteInto $select->from('users') ->where($adapter->quoteInto('eu.username LIKE ?',"%".$param['name']."%")); 当我通过任何类似‘或-1=-1’或任何类似于 ' or 1=1-- ' or 1-- ' or 1 \" or '1' ' or 1=1-- ' OR ''=' ' or 'a'='a ') or ('a'='a

您好,我在下面的查询中使用了
quoteInto

 $select->from('users')
 ->where($adapter->quoteInto('eu.username LIKE ?',"%".$param['name']."%"));
当我通过任何类似‘或-1=-1’或任何类似于

 ' or 1=1--
 ' or 1--
 ' or 1
 \" or '1'
 ' or 1=1--
 ' OR ''='
 ' or 'a'='a
  ') or ('a'='a
'; exec master..xp_cmdshell 'ping 10.10.1.2'--
 ';

当我回显我的查询时,所有这些内容都被放入我的查询的
子句中。我只想问一下,在引用我的查询之后,sql注入是否安全?

是的,通过使用db适配器quote函数,您可以安全地避免sql注入

当您使用
quoteInto
Zend时,Zend将调用方法来转义值字符串

来自Zend Docs:
quote()方法接受单个参数,即标量字符串值。 它以某种方式返回带有特殊字符的值 适用于您正在使用的RDBMS,并由字符串包围 值分隔符


为了使您的应用程序更安全,您还应该使用
Zend_Form
,使用可用和可用的元素。元素验证将发现问题并避免垃圾数据库调用,过滤器将清理数据

仅供参考,
->其中('eu.username LIKE?',“%”$params['name'].“%”)
将执行完全相同的操作,但代码较少。@Tim感谢dude,但有多个条件。所以必须使用多个orwhere或where。这比我使用的代码太大了。