与使用 UPDATE、INSERT 等相比,我在查询数据库 (SELECT) 时遭受 sql 注入的可能性是否一样?
我正在更新到 PDO,所以我应该在查询数据库时使用“准备/执行”,还是只在更新时使用?
与使用 UPDATE、INSERT 等相比,我在查询数据库 (SELECT) 时遭受 sql 注入的可能性是否一样?
我正在更新到 PDO,所以我应该在查询数据库时使用“准备/执行”,还是只在更新时使用?
如果您在查询(用户输入)中使用变量,则它是选择查询或插入/更新,
就像在选择查询中一样,您在 where 子句中传递变量,然后为了防止 sql 注入,您应该对 mysql 使用 PDO。
例如:这是您的查询;
select * from login where username = '$username' and password= '$password';
那么如果用户尝试放
$username ='admin \' OR 1=1';
然后编译的查询将变为
select * from login where username = 'admin' OR 1=1 and password= '...';
(虽然这种方式也是错误的。您应该只从登录表中检查用户名并根据用户获取密码,然后通过您的语言代码匹配它。)但作为示例,也可以注入选择查询。
另见: