加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 13:53:15 所属栏目:PHP教程 来源:网络整理
导读:我知道你们中的一些人可能会关闭这个问题,但我的问题来自你和你的答案.我正在阅读SQL注入的过去两小时的问题和答案以及如何保护您的数据库.我看到的大量网页和教程也是如此. 我发现有一半人声称准备语句可以保护你的数据库,另外50人声称它不是. 另一方面,我
我知道你们中的一些人可能会关闭这个问题,但我的问题来自你和你的答案.我正在阅读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语句中>运行声明

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读