如何防止SQL注入攻击

 我来答
放弃炒衙232
2013-10-21 · 超过77用户采纳过TA的回答
知道答主
回答量:161
采纳率:80%
帮助的人:67.2万
展开全部
方法一:密码比对
代码:$sql="selectpasswordfromuserswhereusername='$name'";$res=mysql_query($sql,$conn);if($arr=mysql_fetch_assoc($res)){//如果用户名存在if($arr['password']==$pwd) {//密码比对echo "登录成功";}else{echo "密码输入有误";}}else{echo "该用户名不存在";}分析:该情况下,代码健壮了不少,即使在magic_quote_gpc=Off的情况下,也能防止SQL注入攻击。因为攻击者想成功登录的话,得绕过两道坎,第一是输入的用户名要存在,这一步可以构造一个SQL语句(‘ or 1=1%23)直接绕过,但是这样子无法通过第二道坎。因为需要用户输入一个正确的密码才能通过,显然,这已经拒绝了SQL注入攻击。
方法二:使用PDO的PDO::prepare()预处理操作来防止SQL注入攻击
思路:创建一个pdo对象,利用pdo的预处理操作可以防止SQL注入攻击代码:$name=$_GET['username'];$pwd=$_GET['password'];$sql="select*fromuserswhereusername=?andpassword=?";//1
.创建一个pdo对象$pdo=new PDO("mysql:host=localhost;port=3306;dbname=injection","root","");//2
.设置编码$pdo-exec("setnames'utf8'");//3
.预处理$sql语句
$pdoStatement=$pdo-prepare($sql);//4
.把接收到的用户名和密码填入
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式