0

与使用 UPDATE、INSERT 等相比,我在查询数据库 (SELECT) 时遭受 sql 注入的可能性是否一样?

我正在更新到 PDO,所以我应该在查询数据库时使用“准备/执行”,还是只在更新时使用?

4

2 回答 2

2

每当您执行查询时,您都必须这样做。如果您通过查询传递输入(变量),请不要介意它的插入、更新、选择或删除,您必须处理 SQL 注入。

您可以在这里找到最佳答案

如何防止 PHP 中的 SQL 注入?

于 2013-10-24T10:58:09.063 回答
2

如果您在查询(用户输入)中使用变量,则它是选择查询或插入/更新,

就像在选择查询中一样,您在 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= '...';

(虽然这种方式也是错误的。您应该只从登录表中检查用户名并根据用户获取密码,然后通过您的语言代码匹配它。)但作为示例,也可以注入选择查询。

另见:

于 2013-10-24T10:54:10.833 回答