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

php – 此PDO代码如何防止SQL注入?

发布时间:2020-12-13 17:38:49 所属栏目:PHP教程 来源:网络整理
导读:所以我正在调查整个PDO的事情,当我遇到这个代码时,我正在阅读这个博客教程,解释是如果我使用PDO进行数据绑定 – 用户将无法添加SQL注入.这是如何运作的? # no placeholders - ripe for SQL Injection! $STH = $DBH-("INSERT INTO folks (name,addr,city) va
所以我正在调查整个PDO的事情,当我遇到这个代码时,我正在阅读这个博客教程,解释是如果我使用PDO进行数据绑定 – 用户将无法添加SQL注入.这是如何运作的?

# no placeholders - ripe for SQL Injection!  
$STH = $DBH->("INSERT INTO folks (name,addr,city) values ($name,$addr,$city)");  

# unnamed placeholders  
$STH = $DBH->("INSERT INTO folks (name,city) values (?,?,?); 

# named placeholders 
$STH = $DBH->("INSERT INTO folks (name,city) value (:name,:addr,:city)");  

这是我从中获得的网站的链接,如果您想阅读它以供参考.
http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/

解决方法

(第二行有一个错误;字符串没有被终止.添加一个“);到最后,你应该没问题.它也在你链接的页面上,所以它的错.你当然也是需要提供替代问号的值,然后在得到任何结果之前实际运行查询.)

无论如何,到了这一点. PDO寻找?或:名称标记,并使用您指定的值替换它们(按顺序或按名称分别).当值插入到查询字符串中时,它们首先被处理以转义可能用于注入攻击的任何内容.

它类似于在查询中使用它之前对值使用mysql_real_escape_string()(或更弱的addslashes()),但是PDO会自动执行它并且更好.

(编辑:李大同)

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

    推荐文章
      热点阅读