Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 这个登录方法安全吗_Php_Mysql_Security - Fatal编程技术网

Php 这个登录方法安全吗

Php 这个登录方法安全吗,php,mysql,security,Php,Mysql,Security,我为一个客户的网站做了以下管理员登录,我只是想问一下这个方法是否安全,我在数据库中使用了一个userID cookie检查和一个“is the administrator online”条目,出于安全原因,我也会检查这个条目 对不起,如果我的格式是坏的,我会接受任何提示,请耐心等待我,我是一个新手程序员,刚刚进入阶段“客户的第一个项目” 不,这是有缺陷的。有几个问题 统计拥有相同密码的用户数是没有意义的(第二次查询) md5哈希不足以存储密码。如果攻击者能够访问数据库,他可以轻松找到密码。你必

我为一个客户的网站做了以下管理员登录,我只是想问一下这个方法是否安全,我在数据库中使用了一个userID cookie检查和一个“is the administrator online”条目,出于安全原因,我也会检查这个条目

对不起,如果我的格式是坏的,我会接受任何提示,请耐心等待我,我是一个新手程序员,刚刚进入阶段“客户的第一个项目”


不,这是有缺陷的。有几个问题

  • 统计拥有相同密码的用户数是没有意义的(第二次查询)
  • md5哈希不足以存储密码。如果攻击者能够访问数据库,他可以轻松找到密码。你必须用盐
  • 在数据库中保存isonline没有任何意义。如果用户未注销,则数据库中的访问权限将永久保留
  • 您将用户标识保存在cookie中。它不安全,因为它很容易被欺骗
  • 最后但并非最不重要的一点是,您的代码已打开以进行SQL注入(一次来自查询字符串变量,两次来自Cookie实例)

您对安全的定义是什么?3…2…1…中的SQL注入……这个问题似乎离题了,因为它是一个代码审查请求。这更适合于这种情况。在发布之前,一定要阅读他们的文章,以确保你的问题符合他们的指导原则。没有什么是100%安全的。现在使用
md5()
不是一个好主意,现在有了更有效的散列算法,如
bcrypt
等。您还应该使用参数化查询,然后在完成所有这些操作后,尝试自己打破它!如果用户名与任何记录匹配,并且密码与任何记录匹配,则此代码允许用户登录。我想你会想为一个用户在这两方面都匹配!
<?php
include_once('config.php');
if(isset($_POST['usr']) && isset($_POST['pwd'])){
    $usr=$_POST['usr'];
    $pwd=md5($_POST['pwd']);

    $userquery="SELECT * FROM nexus_administrators WHERE user='".$usr."';";
    $execuser=mysqli_query($con,$userquery);
    $usrnum= mysqli_num_rows($execuser);

    $pwdquery="SELECT * FROM nexus_administrators WHERE pwd='".$pwd."';";
    $execpwd=mysqli_query($con,$pwdquery);
    $pwdnum= mysqli_num_rows($execpwd);

    $query="SELECT adminid FROM nexus_administrators WHERE pwd='".$pwd."' AND user='".$usr."';";
    $result=mysqli_query($con,$query);
    $row=mysqli_fetch_array($result);
    $uid= $row['adminid'];

    echo $uid;
    if($usrnum==1 && $pwdnum==1){
        setcookie("uid", $uid, time()+3600*1000);
        $puthimonline= "UPDATE nexus_administrators SET isOn=1 WHERE adminid='".$uid."';";
        mysqli_query($con,$puthimonline);
        header('Location: adminpanel.php');

    }


}

//Ai n-ai cookie dai la poarta
if (!isset($_COOKIE['uid'])){
    echo " INTRUS !!!!";
    echo " </br> Zbori sau o s**i pe ciuperca";
}else{
    //te verific si-n baza
    $query= "SELECT * FROM nexus_administrators WHERE adminid='".$_COOKIE['uid']."' AND isOn=1;";
    $result=mysqli_query($con,$query);
    if(mysqli_num_rows($result)!= 1){
        header('Location: index.php');
    }else{
        if(isset($_GET['log'])){
            $puthimoffline= "UPDATE nexus_administrators SET isOn=0 WHERE adminid='".$_COOKIE['uid']."';";
            mysqli_query($con,$puthimoffline);
            header('Location: index.php');
        }



        echo "hello my dear admin";



        echo"
        <a href='adminpanel.php?log=0'> Log Out</a>";


    };
}



?>