php – 准备语句保护您的数据库吗?

前端之家收集整理的这篇文章主要介绍了php – 准备语句保护您的数据库吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道你们中的一些人可能会关闭这个问题,但我的问题来自你和你的答案.我正在阅读sql注入的过去两小时的问题和答案以及如何保护您的数据库.我看到的大量网页和教程也是如此.

我发现有一半人声称准备语句可以保护你的数据库,另外50人声称它不是.

另一方面,我读到mysql_real_escape_string完成这项工作,而其他人则说它不是.

我的问题是谁相信?

另外,这是一个适当的准备声明吗?

$stmt = $dbh->prepare("SELECT PHPro_user_id,PHPro_username,PHPro_password FROM PHPro_users 
                    WHERE PHPro_username = :PHPro_username AND PHPro_password = :PHPro_password");

        /*** bind the parameters ***/
        $stmt->bindParam(':PHPro_username',$PHPro_username,PDO::PARAM_STR);
        $stmt->bindParam(':PHPro_password',$PHPro_password,PDO::PARAM_STR,40);

        /*** execute the prepared statement ***/
        $stmt->execute();
准备好的陈述没有.只要所有不受信任的数据都通过参数传递而不是插入到语句中,绑定参数就会保护语句(而不是整个数据库).当人们使用预准备语句时,他们几乎总是使用绑定参数,因此这两个名称经常混为一谈.

>准备声明
>使用变量作为附加参数运行语句

MysqL_real_escape_string几乎总能完成这项工作,但由于它为流程添加了额外的步骤,因此更容易出现人为错误.

>逃避每个变量>将变量连接到sql语句中>运行声明

原文链接:https://www.f2er.com/php/139070.html

猜你在找的PHP相关文章