使用quoteInto之后我是否可以安全地从SQL注入?

时间:2014-02-05 15:29:38

标签: 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
'; exec master..xp_cmdshell 'ping 10.10.1.2'--
 ';

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

1 个答案:

答案 0 :(得分:1)

是的,使用db adapter quote函数可以避免SQL注入。

当你使用quoteInto时,Zend将调用Zend_Db_Adapter::quote方法来转义值字符串。

  

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

为了使您的应用更安全,您还应该使用Zend_Form使用可用Zend FiltersZend Validators的元素。元素的验证将捕获问题并避免垃圾数据库调用和过滤器将清理您的数据!