gpt4 book ai didi

php - 从 sql 数据库设置 session id 变量;这安全吗?

转载 作者:可可西里 更新时间:2023-10-31 23:32:56 28 4
gpt4 key购买 nike

用我sql表中的user_id作为session id不安全吗?这通常是 PHP 开发人员所做的吗?


(来源:sockface.com)

我也试过无数次将session 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 信息 here登录后

所以我的问题是,将 session ID 存储为 user_id 是否安全?当我尝试这样做时,为什么它不起作用?

最佳答案

几件事:

1.) session ID 不应该是特定用户的常量值。这是安全违规行为。 session ID 应该每隔一段时间更改一次。理想情况下,它应该是一个随机值。

2.) 您似乎没有设置 session ID。您正在设置名为“uid”的 session 变量。

3.) 你有没有调用过session_start()


尽管我真的不建议将 session ID 设置为常量值,但您可以使用 session_id() function 为 session 设置 ID :

$session_id = "some_random_value";
session_id($session_id);

但正如我所说,这不应该是用户的 ID。您可以将用户的 ID 存储为 session 信息,并在用户加载页面时检查他们是否已登录。

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;
}

有关 PHP session 的更多信息,请参阅 session documentation .

关于php - 从 sql 数据库设置 session id 变量;这安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12869978/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com