php – 从sql数据库设置会话id变量;这样安全吗?

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 从sql数据库设置会话id变量;这样安全吗?脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的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 @L_404_1@

所以我的问题是,将会话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 documentationPHP会话的更多信息.

脚本宝典总结

以上是脚本宝典为你收集整理的php – 从sql数据库设置会话id变量;这样安全吗?全部内容,希望文章能够帮你解决php – 从sql数据库设置会话id变量;这样安全吗?所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。