Данные сессии Php возвращают неправильное значение - PullRequest
0 голосов
/ 29 августа 2018

У меня есть приложение, которое я построил в php 7 с платформой воспламенителя кода, и моя проблема с данными сеанса, хранение и получение данных сеанса работает нормально, но иногда, когда два человека входят в систему через короткие интервалы, данные сеанса для первого пользователя также извлекается для второго пользователя, который просматривал сайт, увидел здесь нечто подобное ( неверные данные в сеансе PHP ), что говорит о том, что это может быть проблема с кэшированием (мой сайт использует nginx для кэширования ), но никаких конкретных решений не предлагалось. Любые предложения или идеи будут оценены.

Редактировать: Вот раздел моей библиотеки для авторизации

public function login_account($email,$password)
    {
       $db = "db";
       $data = array("login_mail" => sha1($email));
       $query_result = $this->CI->m_eauth->get_login_password($data,$db);

       $hash_password ="";

        foreach($query_result->result_array() as $value)
        {
         $hash_password = $value['hash_password'];
         $site_name = $value['hash_name'];
         $account_type = $value['account_type'];
         $site_match_id = $value['site_match_id'];
         $site_levels = $value['levels'];
         $site_roles = $value['roles'];
        }

        if(password_verify($password, $hash_password)){
            // Success!
            $session_data = array(
              "site_id"=>$site_match_id,
              "site_email"=>$email,
              "site_name"=>$site_name,
              "site_avatar"=>md5($email).".jpg",
              "site_type"=>$account_type,
              "site_levels"=>$site_levels,
              "site_roles"=>$site_roles
             );

            $this->CI->session->set_userdata($session_data);

              return "successful";
        }
        else{
            // Invalid credentials
            return "unsuccessful";
        }
    }

Позвольте мне добавить, что логин работает нормально, а отдельные сессии работают просто отлично. Но время от времени возникает проблема, которую я описал, и я немного сбиваю с толку, потому что не знаю, где искать.

1 Ответ

0 голосов
/ 29 августа 2018

Нет реального способа приукрашивать это, сеансы - это не волшебная часть PHP, которую вы можете просто вызвать session_start() и заняться своим делом. Если ваше приложение пропускает сеансы, значит, вы не защитили его должным образом, и вам нужно исправить это.

Безопасность сеанса является довольно сложной задачей, учитывая, что захваченный сеанс в основном дает злоумышленнику полный доступ к чужой учетной записи.

Я бы порекомендовал вам прочитать официальную документацию PHP для сеансов , а также рассмотреть возможность использования модуля идентификатора пользователя Nginx в качестве дополнительной меры для идентификации пользователей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...