Php 如果我对会话密钥使用session_id(),安全吗?

Php 如果我对会话密钥使用session_id(),安全吗?,php,Php,我想问一下登录系统技术,这里是我的登录系统脚本,如果我使用session_id()作为会话密钥是否安全。你们可以分享你们的登录系统给我更多的参考资料吗。多谢各位 <?php class Login { function __construct(){ } function is_logged_in(){ if(empty($_SESSION)){ session_start(); } if(

我想问一下登录系统技术,这里是我的登录系统脚本,如果我使用session_id()作为会话密钥是否安全。你们可以分享你们的登录系统给我更多的参考资料吗。多谢各位

<?php
class Login {
    function __construct(){

    }

    function is_logged_in(){
        if(empty($_SESSION)){
            session_start();
        }

        if(empty($_SESSION[session_id()])){
            return false;
        }

        return true;
    }

    function get_user(){
        if(!$this->is_logged_in()){
            return $this->login();
            exit();
        }

        return $_SESSION;
    }

    function set_user($userattr){
        $_SESSION[session_id()] = $userattr;
    }

    function login(){
        if(isset($_POST['btnlogin'])){
            $config = new Config;
            $result = "";
            $sql = $config->pdo->prepare("SELECT * FROM auth
                                          WHERE username = '".$_POST['username']."'
                                          AND passcode = '".md5($_POST['password'])."'");
            $sql->execute();
            if($sql->rowCount() > 0){
                $this->set_user(array('username' => 
                                    $_POST['username'])
                                );
                header("Location: ./index.php");
            }else{
                echo 'wrong username or pass';  
            }
        }
        ?>
        <div id="login-box">
            <form method="post" action="">
                <input type="text" name="username" class="input-field" required="true" placeholder="type your username" />
                <input type="password" name="password" class="input-field" required="true" placeholder="type your password" />
                <input type="submit" value="Log In" class="login-button" name="btnlogin" /> 
            </form>
        </div>
        <?php
    }
}

您的登录代码非常不安全。您对SQL注入非常开放,只需想象有人发布用户名
“DROP TABLE auth--。您已经在使用准备好的语句,那么为什么不使用参数呢?另外:
md5
多年来一直不安全。使用
密码\u散列()
密码\u验证()
!谢谢您的回答,好的,我将搜索密码\u散列和密码\u验证,现在,我用于会话的会话\u id如何?我认为这是多余的,因为使用的会话由会话id本身定义。这只是多余的。谢谢@franzgleichman,oke,我将在我的会话中使用来自generate char的密钥。我认为这样会更好。请注意,会话是按用户进行的,因此不需要其他/随机名称,您可以使用
$\u session['username']