PHP 开发中有效防御 SQL 注入攻击有哪些好方法

 我来答
雨过天晴日丶
2016-03-07 · TA获得超过2636个赞
知道大有可为答主
回答量:1879
采纳率:91%
帮助的人:1681万
展开全部
使用PDO或者MySQLi,有很多封装好的方便的Class。
例如使用PHP-PDO-MySQL-Class · GitHub(这个Class使用上比较类似Python的MySQLdb)的话,这样就是安全的:
<?php
$DB->query("SELECT * FROM fruit WHERE name IN (?)",array($_GET['pm1'],$_GET['pm2']));
$DB->query("SELECT * FROM users WHERE name=? and password=?",array($_GET['name'],$_GET['pw']));
?>

直接拼接字符串则是危险的:
<?php
$DB->query("SELECT * FROM fruit WHERE name IN ('".$_GET['pm1']."','".$_GET['pm2']."')");
$DB->query("SELECT * FROM users WHERE name='".$_GET['name']."' and password='".$_GET['pw']."'");
?>

PDO参数绑定的原理是将命令与参数分两次发送到MySQL,MySQL就能识别参数与命令,从而避免SQL注入(在参数上构造命令)。
mysql在新版本PHP中已经预废弃,使用的话会抛出错误,现在建议使用MySQLi或者MySQL_PDO。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式