以下登陆代码安全上有什么问题

 1 <?php
 2     $m = $_GET['m'];
 3     $user = $_GET['user'];
 4     $pass = $_GET['pass'];
 5     include($m.”do.php”);
 6     $sql = ”select count(*) as b from user where username=’”.$user.”‘and password=’”.$pass.”‘;
 7     $r = mysql_query($sql);
 8     list($count) = @mysql_fetch_array($r);
 9     if($count>1){
10 
11          ……登陆成功操作
12     }
13 ?>

解析以上代码:

  1.用户名跟密码都是通过get方式明文传输的,这是一个严重的问题,虽然post方式也不是特别安全,但对于这些表单提交,还是post方式最好。

  2.没有过滤用户输入,存在严重的sql注入隐患,应该处理用户输入,有一个原则叫:永远不要相信用户的输入。这里就是这个道理

  3.include($m.”do.php”);把用户的输入作为参数,不做处理的话,很容易出现"文件不存在"的异常

  4.sql查询部分:从代码上看,数据库中密码是明文保存的,至少应该做个MD5加密吧

  5.if($count>1),代码错误,难道会有两个以上相同用户名相同密码的账户吗?(即使有也应该是if($count>=1)

 

posted @ 2013-04-10 22:58  MR.Punk  阅读(167)  评论(0编辑  收藏  举报