这个问题在这里已经有答案了:
如何防止php中的sql注入(28个答案)
两年前关门了。
大多数时候我都是这样做sql的:
$pdo = new PDO($dsn, $usr, $pass);
$qry = 'SELECT * FROM `my_table` WHERE `pk_id` = '. $id .';';
$res = $pdo->query($qry);
但最近我看到一些帖子显示,唯一安全的方法就是使用事先准备好的语句——这对我来说不是一个真正的问题,这可能有一个答案,只是一个我在谷歌上找不到的答案。
当然,如果我所有的陈述 .';'
使用concat可以吗?
谢谢,
1条答案
按热度按时间km0tfn4u1#
不。
在sql中,如果在查询末尾提供两个分号,则不会给出错误。
因此,如果用户可以传递:
它将产生同样的结果,不管代码末尾是否添加了分号。
准备好的语句的巨大好处是没有数据被修改。它只发送两个查询。
这是一个很好的源代码,其中包含许多sql注入示例。