php – 从sql数据库设置会话id变量;这样安全吗?
发布时间:2020-12-13 16:18:43 所属栏目:PHP教程 来源:网络整理
导读:在我的sql表中使用user_id作为会话ID是不安全的吗?这通常是php开发人员做的吗? http://sockface.com/hellooooo.png 此外,我已经无数次尝试将会话ID存储为用户ID include('profile/core/init_inc.php'); $_SESSION['uid'] = $user_id;header("Location: pro
在我的sql表中使用user_id作为会话ID是不安全的吗?这通常是php开发人员做的吗?
http://sockface.com/hellooooo.png 此外,我已经无数次尝试将会话ID存储为用户ID include('profile/core/init_inc.php'); $_SESSION['uid'] = $user_id; header("Location: profile/edit_profile.php"); 在我的init_inc中 function fetch_user_info($uid){ $uid = (int)$uid; $sql = "SELECT `user_id` AS `id`,`username`,`user_firstname` AS `firstname`,`user_lastname` AS `lastname`,`user_about` AS `about`,`user_email` AS `email` FROM `users` WHERE `user_id` = {$uid}"; $result = mysql_query($sql); return mysql_fetch_assoc($result); 如果我有$_SESSION [‘uid’] = 90;登录后会显示test@test.ca info here 所以我的问题是,将会话ID存储为user_id是否安全,以及当我尝试这样做时,为什么它不起作用呢? 解决方法
几件事:
1.)会话ID不应该是特定用户的常量值.这是违反安全规定的行为.会话ID应该每隔一段时间更改一次.理想情况下,它应该是随机值. 2.)看起来您没有设置会话ID.您正在设置名为“uid”的会话变量. 3.)你有没有调用session_start()? 尽管我真的不建议将会话ID设置为常量值,但您可以使用session_id() function设置会话的ID: $session_id = "some_random_value"; session_id($session_id); 但就像我说的那样,这不应该是用户的ID.您可以将用户的ID存储为会话信息,并在用户加载页面时检查它们是否已登录. if (isset($_SESSION["user_id"])) { //user is logged in $user_id = $_SESSION["user_id"]; } else { //make user log in $user_id = result_of_login(); $_SESSION["user_id"] = $user_id; } 有关session documentation中PHP会话的更多信息. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |