牛骨文教育服务平台(让学习变的简单)
博文笔记

PHP + Mysql 登录功能防止SQL注入的一个办法

创建时间:2017-09-07 投稿人: 浏览次数:904

最近在了解SQL注入,发现很多人登录功能都是同时使用用户输入的username和password,组合到一条sql语句里面,查询判断有无结果来判定是否可登录。例如下面:

<?php
$username = $_POST["username"];
$password = $_POST["password"];
$sql = "select * from user where username="{$username}" and password="{$password}" ";
$this->db->query($sql);

这样很容易在 username参数加入 ‘ or 1=1 -- 注入,虽然这只是示例,但现在很多使用框架,一不注意,最终组合成的语句也是类似这样的。这里不说输入参数过滤、参数绑定,语法分析等常用办法去应对SQL注入,我们可以转变一下判断方法:

<?php
$username = $_POST["username"];
$password = $_POST["password"];
$sql = "select * from user where username="{$username}" ";
$data = $this->db->query($sql);

......

if($data["password"] == $password){
	//密码OK
}else{
	//密码错误
}

这样先查到数据,再用php本身来判断是否匹配密码,是不是解决了问题了?

!!!个人遇见,如有不足,欢迎指正。



声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。