存储$ _SESSION时的安全性

 sjf66355555 发布于 2023-01-18 10:34

我存储了这样的会话:

$_SESSION['user'] = $_POST['u_name'];
$_SESSION['pass'] = $_POST['u_pass'];

这样安全吗?

if( isset($_SESSION['user']) && isset($_SESSION['pass']) ) {

    // user exists

}else{

    // user does not exist

}

或者我应该检查(在每个文件中)是否

$_SESSION['user']

$_SESSION['pass']

在数据库中.

像这样 :

    // db connection
    $conn = new PDO('mysql:host='.$host.';dbname='.$dbname, $user_db, $pass_db);

    // query string
    $stmt = $conn->prepare("SELECT * FROM users WHERE uname=:u_name AND AES_DECRYPT(upass,'some_key') = :u_pass;");

    // execute
    $statement->execute( array( 'u_name' => $_SESSION['user'], 'u_pass' => $_SESSION['pass']) );

    // does it return something ?
    if( $stmt->fetchColumn() == 1){

        // user exists

    }else{

        // user does not exist

    }

jeroen.. 5

不,不要将用户密码以纯文本形式存储,甚至不加密; 不在会话中,也不在数据库中.密码应该加盐和散列,例如参见SO上的这个问题.

您根本不需要会话中的密码; 在您检查一次正确的凭据后,无需存储它.如果您再次保护自己的会话劫持,会话中存储的信息(例如用户名)足以验证访问者.

1 个回答
  • 不,不要将用户密码以纯文本形式存储,甚至不加密; 不在会话中,也不在数据库中.密码应该加盐和散列,例如参见SO上的这个问题.

    您根本不需要会话中的密码; 在您检查一次正确的凭据后,无需存储它.如果您再次保护自己的会话劫持,会话中存储的信息(例如用户名)足以验证访问者.

    2023-01-18 10:36 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有