• 技术文章 >php教程 >php手册

    PHP查询登录中的sql注入

    2016-06-13 09:32:57原创291
    ----------------------------------------------------------------------------------------------------

    比如以下一段登录的代码:

    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注入问题了。

    ----------------------------------------------------------------------------------------------------

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:PHP
    上一篇:ECSHOP2.73京东手机WAP模板 下一篇:php防止伪造数据从URL提交解决方法
    Web大前端开发直播班

    相关文章推荐

    • PHP的CURLOPT_POSTFIELDS参数使用数组和字符串的区别• 几个php技巧• Linux下PHP连接MSSQLServer的办法• PHP的XML分析函数转 介绍这个PHP里的XML分析函数的文章可不太有哦。。看过这篇就应该清楚点了吧...• php header函数使用实例代码

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网