Php 我必须用准备好的SQL语句清理用户输入吗?

Php 我必须用准备好的SQL语句清理用户输入吗?,php,mysql,pdo,Php,Mysql,Pdo,这被认为是完全安全的吗 $stmt = $dbhandler->prepare("update sometable set somefield=:somestring"); $stmt->bindParam(":somestring",$_REQUEST["hack_me_please"],PDO::PARAM_STR); $stmt->execute(); 如果没有,什么能让它更安全?我假设PDO/MySQL/PHP中存在未知的漏洞,将来可能会被利用,因此我想知道是否有什么

这被认为是完全安全的吗

$stmt = $dbhandler->prepare("update sometable set somefield=:somestring");
$stmt->bindParam(":somestring",$_REQUEST["hack_me_please"],PDO::PARAM_STR);
$stmt->execute();
如果没有,什么能让它更安全?我假设PDO/MySQL/PHP中存在未知的漏洞,将来可能会被利用,因此我想知道是否有什么合理的方法可以让我的查询更安全,或者是不需要事先准备好的语句


如果这么简单,为什么SQL注入仍然是一件事?它不应该像脊髓灰质炎那样吗?

不,在使用prepared语句保护
sql
注射时,不需要对输入进行消毒,但如果出于任何其他原因,您可以这样做

如果这么简单,为什么SQL注入仍然是一件事?它不应该变成小儿麻痹症吗


对那些知道它的人来说很容易,除非你知道,否则没有什么是容易的。我相信现在很少发生
sql
注入。

不,在使用prepared语句保护
sql
注入时,没有必要对输入进行消毒,但如果出于任何其他原因,您可以这样做

如果这么简单,为什么SQL注入仍然是一件事?它不应该变成小儿麻痹症吗


对那些知道它的人来说很容易,除非你知道,否则没有什么是容易的。我相信现在很少发生
sql
注入。

不,在使用prepared语句保护
sql
注入时,没有必要对输入进行消毒,但如果出于任何其他原因,您可以这样做

如果这么简单,为什么SQL注入仍然是一件事?它不应该变成小儿麻痹症吗


对那些知道它的人来说很容易,除非你知道,否则没有什么是容易的。我相信现在很少发生
sql
注入。

不,在使用prepared语句保护
sql
注入时,没有必要对输入进行消毒,但如果出于任何其他原因,您可以这样做

如果这么简单,为什么SQL注入仍然是一件事?它不应该变成小儿麻痹症吗


对那些知道它的人来说很容易,除非你知道,否则没有什么是容易的。我相信现在很少发生sql注入。

您的示例是完全安全的,因为它传递的用户输入参数与查询字符串是分开的。sql注入仍然存在的原因是许多用户仍然使用不推荐的
mysql.*
api/驱动程序,并且不知道其他替代方法。此外,即使使用pdo或mysqli,您仍然可以将用户输入直接传递到查询字符串中,而不是单独绑定它。

您的示例是完全安全的,因为它传递的用户输入参数与查询字符串是分开的。sql注入仍然存在的原因是许多用户仍然使用不推荐的
mysql.*
api/驱动程序,并且不知道其他替代方法。此外,即使使用pdo或mysqli,您仍然可以将用户输入直接传递到查询字符串中,而不是单独绑定它。

您的示例是完全安全的,因为它传递的用户输入参数与查询字符串是分开的。sql注入仍然存在的原因是许多用户仍然使用不推荐的
mysql.*
api/驱动程序,并且不知道其他替代方法。此外,即使使用pdo或mysqli,您仍然可以将用户输入直接传递到查询字符串中,而不是单独绑定它。

您的示例是完全安全的,因为它传递的用户输入参数与查询字符串是分开的。sql注入仍然存在的原因是许多用户仍然使用不推荐的
mysql.*
api/驱动程序,并且不知道其他替代方法。此外,即使使用pdo或mysqli,您仍然可以将用户输入直接传递到查询字符串中,而不是单独绑定它。

这是安全的,因为它不会传递到要解释的字符串中,这意味着您不能“转义”字符串。这是安全的,因为它不会传递到要解释的字符串中,也就是说,你不能“转义”这个字符串。它是安全的,因为它不会将它传递到要解释的字符串中,这意味着你不能“转义”这个字符串。它是安全的,因为它不会将它传递到要解释的字符串中,这意味着你不能“转义”可以说,字符串.SQL注入的发生方式比您想象的要多。在我目前的工作岗位上,我有这方面的第一手经验,并且可以证明,许多开发人员没有保护他们的代码,并且在他们的“自定义联系人表单”上被破坏。此外,它之所以安全,是因为用户的实际输入从未直接注入字符串。
prepare
向服务器发送请求,
execute
传递变量。这允许分离,并使它成为一个非问题。我很久没有听说过它了,但我可能是错的,无论如何,谢谢:-)SQL注入发生的方式比你相信的要多。在我目前的工作岗位上,我有这方面的第一手经验,并且可以证明,许多开发人员没有保护他们的代码,并且在他们的“自定义联系人表单”上被破坏。此外,它之所以安全,是因为用户的实际输入从未直接注入字符串。
prepare
向服务器发送请求,
execute
传递变量。这允许分离,并使它成为一个非问题。我很久没有听说过它了,但我可能是错的,无论如何,谢谢:-)SQL注入发生的方式比你相信的要多。在我目前的工作岗位上,我有这方面的第一手经验,并且可以证明,许多开发人员没有保护他们的代码,并且在他们的“自定义联系人表单”上被破坏。此外,它之所以安全,是因为用户的实际输入从未直接注入字符串。
prepare
发送请求