Php 为了防止sql注入,我应该在查询数据库时使用PDO“prepare”,还是仅在更新时使用?

Php 为了防止sql注入,我应该在查询数据库时使用PDO“prepare”,还是仅在更新时使用?,php,sql,pdo,sql-injection,Php,Sql,Pdo,Sql Injection,我在查询数据库SELECT时遇到sql注入的可能性是否与使用UPDATE、INSERT等相同 我正在更新PDO,所以在查询数据库时应该使用“prepare/exec”,还是仅在更新时使用 如果在查询用户输入中使用变量,则该变量为select query或insert/update 就像在select查询中一样,在where子句中传递变量,然后为了防止sql注入,应该使用PDO for mysql e、 g: 这是你的疑问 select * from login where username =

我在查询数据库SELECT时遇到sql注入的可能性是否与使用UPDATE、INSERT等相同

我正在更新PDO,所以在查询数据库时应该使用“prepare/exec”,还是仅在更新时使用

如果在查询用户输入中使用变量,则该变量为select query或insert/update

就像在select查询中一样,在where子句中传递变量,然后为了防止sql注入,应该使用PDO for mysql

e、 g: 这是你的疑问

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= '...';
而这种方式也是错误的。您应该只从登录表中检查用户名,并根据用户获取密码,然后通过语言代码进行匹配。但作为一个例子,select查询也可以被注入

另见:

如果在查询用户输入中使用变量,则该变量为select query或insert/update

就像在select查询中一样,在where子句中传递变量,然后为了防止sql注入,应该使用PDO for mysql

e、 g: 这是你的疑问

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= '...';
而这种方式也是错误的。您应该只从登录表中检查用户名,并根据用户获取密码,然后通过语言代码进行匹配。但作为一个例子,select查询也可以被注入

另见:


无论何时执行查询,都必须这样做。更不用说它的插入、更新、选择或删除了。如果要在查询中传递输入变量,则必须注意SQL注入

你可以在这里找到最好的答案


无论何时执行查询,都必须这样做。更不用说它的插入、更新、选择或删除了。如果要在查询中传递输入变量,则必须注意SQL注入

你可以在这里找到最好的答案


无论何时执行查询,都必须执行该操作。不要管它的插入、更新、选择或删除delete@User016它必须是答案,而不是注释。您应该准备任何依赖于动态/用户输入的查询。一个简单的SELECT*FROM表格不需要准备。所以使用$sql=$conn->query通常只有在没有可变参数的情况下才能使用?@Ben Fortune您能回答这个问题吗,因为它与User016的答案不同。我想确认一下。Ta无论何时执行查询,都必须这样做。不要管它的插入、更新、选择或删除delete@User016它必须是答案,而不是注释。您应该准备任何依赖于动态/用户输入的查询。一个简单的SELECT*FROM表格不需要准备。所以使用$sql=$conn->query通常只有在没有可变参数的情况下才能使用?@Ben Fortune您能回答这个问题吗,因为它与User016的答案不同。我想确认一下。塔汉克斯,你同意@Ben Fortune的说法吗?简单的从表中选择*不需要准备?是的。这就是为什么我写了一篇文章,你们在哪里传递来自用户的输入?然后需要。旁注:不要使用*,请参见“谢谢”,您是否同意@Ben Fortune的说法,即不需要准备从表中简单选择*?是的。这就是为什么我写了一篇文章,你们在哪里传递来自用户的输入?然后需要。旁注:不要使用*,请参阅请从您的答案中取出用户输入请从您的答案中取出用户输入