【问题标题】:having problems with removing sha1 encryption from my code从我的代码中删除 sha1 加密时遇到问题
【发布时间】:2017-07-18 17:18:32
【问题描述】:

我想删除此代码上的 sha1 加密,这样我就可以将我的密码存储在数据库中,而不是加密代码。我是编码新手,所以我需要帮助

代码(settings_model.php)

    <?php
    $settings = new Datasettings();
    if(isset($_GET['q'])){
        $settings->$_GET['q']();
    }

    class Datasettings {

        function __construct(){ 
            if(!isset($_SESSION['id'])){
                header('location:../../');   
            }
        }

        function changepassword(){
            include('../../config.php');
            $username = $_GET['username'];
            $password = $_GET['password'];
            $current = sha1($_POST['current']);
            $new = sha1($_POST['new']);
            $confirm = sha1($_POST['confirm']);
            $q = "select * from userdata where username='$username' and password='$current'";
            $r = mysqli_query($db,$q);
            if(mysqli_num_rows($r) > 0){
                if($new == $confirm){
                    $r2 = mysqli_query($db,"update userdata set password='$new' where username='$username' and password='$current'");
                    header('location:../settings.php?msg=success&username='.$username.'');   
                }else{
                    header('location:../settings.php?msg=error&username='.$username.'');   
                }
            }else{
                header('location:../settings.php?msg=error&username='.$username.'');   
            }   
        }

        function addaccount(){
            include('../../config.php');
            $level = $_GET['level'];
            $id = $_GET['id'];
            $q = "select * from $level where id=$id";
            $r = mysqli_query($db,$q);
            $row = mysqli_fetch_array($r);
            if($level == 'student'){
                $username = $row['studid'];                
                $fname = $row['fname'];
                $lname = $row['lname'];
                $password = sha1($username.'-'.$fname);
            }else{
                $username = $row['teachid'];                
                $fname = $row['fname'];
                $lname = $row['lname'];
                $password = sha1($username.'-'.$fname);
            }
            $verify = $this->verifyusername($username);
            if($verify){
                $q2 = "insert into userdata values(null,'$username','$password','$fname','$lname','$level')";
                mysqli_query($db,$q2);
                header('location:../'.$level.'list.php?r=added an account');
            }else{
                  header('location:../'.$level.'list.php?r=updated'); 
            }

        }

        function verifyusername($user){
            $q = "select * from userdata where username='$user'";
            $r = mysql_query($q);
            if(mysql_num_rows($r) < 1){
               return true;
            }else{
                return false;   
            }
        }

        function getuser($search){
        include('../config1.php');  
            $user = $_SESSION['id'];
            $q = "select * from userdata where username !='$user' and username like '%$search%' order by lname asc";   
            $r = mysqli_query($db, $q);
            return $r;
        }


          function addaccounts(){
            include('../../config1.php');
           extract($_POST);

            $q = "select * from $level where id=$id";
            $r = mysqli_query($db,$q);
            $row = mysqli_fetch_array($r);
            if($level == 'student'){
                $username = $row['studid'];                
                $fname = $row['fname'];
                $lname = $row['lname'];
                $password = sha1($username.'-'.$fname);
            }else{
                $username = $row['teachid'];                
                $fname = $row['fname'];
                $lname = $row['lname'];
                $password = sha1($username.'-'.$fname);
            }
            $verify = $this->verifyusername($username);
            if($verify){
                $q2 = "insert into userdata values(null,'$username','$password','$fname','$lname','$level')";
                mysqli_query($db,$q2);
                header('location:../'.$level.'list.php?r=added an account');
            }else{
                  header('location:../'.$level.'list.php?r=updated'); 
            }

        }



    }
?>

请帮助尽快得到答案。谢谢。

【问题讨论】:

  • 仅供参考:不要使用 sha1,它很旧且可破解。使用password_hash()
  • 你也在混合不同的mysql api;你不能那样做。
  • 专业提示: 不要装逼,不要说你的需求很紧急。回答问题的人是生活忙碌的志愿者,就像你一样。
  • “删除 SHA1 加密”是什么意思?你用什么代替它?
  • "如何编写极其不安全的 PHP 密码存储代码?"将是这个问题的一个很好的标题。

标签: php encryption


【解决方案1】:

只需更改这一行

$confirm = sha1($_POST['confirm']);

到这里

$confirm = $_POST['confirm'];

【讨论】:

  • 想必,OP也必须迁移已经存在的密码。
  • 没有理由不应该,这不会改变任何现有的,但任何新的都会改变。
猜你喜欢
  • 1970-01-01
  • 2012-07-29
  • 1970-01-01
  • 2013-09-10
  • 2015-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-05
相关资源
最近更新 更多