Bu kod "beni hatırla" ile PHP oturum için yeterince güvenli mi?

0 Cevap php

Ben oturum güvenliği hakkında bilgi ALOT okudum, ve bu kod küçük parça ile geldi.

Siz ona bir göz attım ve daha iyi ve daha güvenli hale getirmek için bir şey değiştirmeniz gerekiyorsa bana seviniriz.

function cookie_auth(){
    if(isset($_COOKIE['cookie_name'])){
        $data = $_COOKIE['cookie_name'];
        list(,$username) = explode(':', $data);
        $sql = "SELECT * FROM tbl WHERE tbl.usrname= '$username'";
        $res = mysql_query($sql) or die(mysql_error());
        $row = mysql_fetch_array($res);
        $num_rows = mysql_num_rows($res);

        if ($num_rows==1){
            // AUTHENTICATE COOKIE VALUES
            $salt1 = sha1($row['alt_username']);
            $text = "constant_text_here";
            $salt2 = sha1($text);

            if($data == $salt1.':'.$username.':'.sha1($row['alt_username'].$salt2)){
                // USER IS AUTHENTICATED AND CORRECT
                $_SESSION['logged_in'] = true;
            }
        }

        else if ($num_rows!=1){
            // REDIRECT TO LOGIN PAGE
        }
    }//end if isset cookie

    // ELSE IF COOKIE ISN'T SET //
    else {
        // REDIRECT TO LOGIN PAGE
    }
}// end function cookie_auth //



// AUTHENTICATE USER //
if(!isset($_SESSION['logged_in']) || $_SESSION['logged_in']!==true){
        cookie_auth();
}

else if ($_SESSION['logged_in']===true){
    // FURTHER AUTHENTICATION //
    if($_SESSION['HTTP_USER_AGENT'] != sha1($_SERVER['HTTP_USER_AGENT']){
        header('Location: http://www.domain.com/login');
        session_destroy();
        die();
    }
}

Şu ana kadar ne düşünüyorsunuz?

Ayrıca ben düşündüm bir şey:

Kullanıcı kimlik doğrulaması değilse hangi kod kullanmalıyım? Ben "session_destroy" kullanın ve sonra "() die" mıdır? Ben "kurulmamış oturumu" kullanmalı mıyım?

Teşekkürler

0 Cevap