表名和列名也是否可以用参数化导入像这样
参数化防止注入模糊查询:
经过尝试都不能使用,请问带%模糊查询如何书写SQL的prepare语句?
有一种可行的方式如下:
sql = 'SELECT * FROM tableA WHERE col LIKE '%'.$string.'%'';
但是失去了防注入的意义,请问有没有正确的方式
不能。
原来的prepare引入的目的,是为了预编译,生成执行计划,从而提高性能。本意可不是为了防止sqlinject。如果table都没有了,是无法预编译的。就没有意义了。
$sql = "SELECT * FROM tableA WHERE col LIKE CONCAT('%',?,'%')";
涉及到的是 PHP Binding a Wildcard 的知识。如果不bind parameter。可以直接拼接字符串。对引入的参数,都做一个escape就安全了。(函数: mysql_real_escape_string)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。