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。这比我使用的代码太大了。