PHP查询登录中的sql注入
比如以下一段登录的代码:
if($l = @mysql_connect('localhost', 'root', '123')) or die('数据库连接失败');
mysql_select_db('test');
mysql_set_charset('utf8');
$sql = 'select * from test where username = "$username" and password = "$password"';
$res = mysql_query($sql);
if(mysql_num_rows($res)){
header('Location:./home.php');
}else{
die('输入有误');
}
----------------------------@chenwei 黑眼诗人
注意上面的sql语句,存在很大的安全隐患,如果使用以下万能密码和万能用户名,那么可以轻松进入页面:
1. $sql = 'select * from test where username = "***" and password = "***" or 1 = "1"';
很明显,针对这条sql语句的万能密码是: ***" or 1 = "1
2. $sql = 'select * from test where username ="***" union select * from users/* and password = "***"';
正斜线* 表示后面的不执行,mysql支持union联合查询, 所以直接查询出所有数据; 所以针对这条sql语句的万能用户名是:***" union select * from users/*
但是,此注入只针对代码中的sql语句,如果$sql = "select * from test where username = $username and password = $password";
上面的注入至少已经不管用了,不过方法是一样的;
在使用PDO之后,sql注入完全可以被避免,而且在这个快速开发的时代,框架横行,已然不用过多考虑sql注入问题了。
----------------------------------------------------------------------------------------------------
上一篇: 用php修改ftp密码_PHP教程
下一篇: Whois 的PHP代码
推荐阅读
-
php怎么实现在查询列表中,点击查询结果跳转查询对应记录的详细内容,如图所示
-
php在多维数组中根据键名快速查询其父键以及父键值的代码_php技巧
-
快速入门:使用Azure 数据 Studio进行连接和查询 Azure SQL 数据仓库中的数据
-
对于ThinkPHP框架早期版本的一个SQL注入漏洞详细分析_PHP
-
PHP 小心urldecode引发的SQL注入漏洞
-
PHP登录环节防止sql注入的方法浅析_PHP
-
在SQL中设置允许同时连接的用户数_PHP教程
-
PHP中防止SQL注入方法详解,phpsql注入详解_PHP教程
-
PHP实现查询两个数组中不同元素的方法,php数组
-
php中mysqli 处理查询结果集的几个方法