Laravel — данные сеанса сохраняются при выходе/входе в систему даже для разных пользователей.Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Laravel — данные сеанса сохраняются при выходе/входе в систему даже для разных пользователей.

Сообщение Anonymous »

Сегодня я заметил нечто тревожное при проверке файлов сеансов в папке Storage/framework/sessions, созданной Laravel 5.

Вот что произошло: p>
  • Я вошел в систему как пользователь A
  • Я перешел на страницу, на которой хранится переменная X в сеансе < /li>
    Я вышел из системы, но браузер не закрыл.
  • Файл сеанса в хранилище/фреймворке/сессиях все еще был там, и браузер
    cookie был жив.
  • Я вошел в систему как пользователь B.
  • Старый файл сеанса в хранилище/framework/sessions был удален и появился новый файл сеанса был там.
  • Я заглянул в новый файл сеанса – сюрприз! переменная X пережила выход из системы и по-прежнему доступна пользователю B!
Это приводит к проблемам безопасности, поскольку теперь пользователь B имеет доступ к данным пользователя A.

Во время отладки исходного кода Laravel я обнаружил, что хранилище сеансов никогда не очищается во время процесса выхода из системы или входа в систему. В методе Illuminate\Auth\Guard::clearUserDataFromStorage() удаляются только учетные данные для входа, но все атрибуты хранилища сеансов все еще присутствуют, а затем позже, когда $kernel->terminate($request, $response); вызывается, что, в свою очередь, приводит к вызову Illuminate\Session\Middleware\StartSession::terminate() Store::save(), который слепо сохраняет $this->attributes в новую сессию, игнорируя тот факт, что она теперь принадлежит другому пользователю.

С одной стороны, это кажется логичным — у Laravel нет никаких предположений относительно моих данных и того, являются ли они Я хочу, чтобы срок его действия истек вместе с аутентификацией или нет. Но было бы здорово задокументировать это где-нибудь с решением, позволяющим прикрепить некоторые конфиденциальные данные к объекту аутентификации и срок их действия истекает вместе с ним.

Это означает, что я, как программист несет ответственность за полное удаление всех конфиденциальных данных из текущего сеанса при входе в систему нового (или того же) пользователя.

Очистка при входе в систему out не будет надежным, поскольку пользователь может никогда не щелкнуть ссылку «Выход» и дождаться истечения срока действия сеанса, что для Laravel все равно не очистит сеанс.

Один Еще одна вещь, о которой следует помнить: мне не следует очищать сеанс слишком рано - должен присутствовать токен AntiForgery, иначе форма входа всегда будет завершаться ошибкой.

У меня есть нашел тему на форуме, которая также пытается решить похожую проблему:

http://laravel.io/forum/04-27-2014-how-to-expire- session-data

Меня это смутило:


У меня была еще одна попытка сегодня попробовал и понял, в чем проблема: Session::flush() не удаляет данные сеанса, созданные приложением, например данные корзины покупок


Если это правда, то единственный способ полностью избавиться от сеанса — использовать встроенные PHP session_unset() и session_destroy(), но я бы не хотел этого делать способ - я бы предпочел найти более чистое решение в стиле Laravel, если это возможно.

Как мне сказать Laravel, что я хочу, чтобы мои старые данные сеанса были удаляется вместе с данными аутентификации пользователя по истечении срока действия аутентификации или при выходе пользователя из системы?

Подробнее здесь: https://stackoverflow.com/questions/307 ... rent-users
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Почему данные моего сеанса PHP не сохраняются на разных страницах?
    Anonymous » » в форуме Php
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Почему данные моего сеанса PHP не сохраняются на разных страницах?
    Anonymous » » в форуме Php
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Почему данные моего сеанса PHP не сохраняются на разных страницах?
    Anonymous » » в форуме Php
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Потеря файла cookie сеанса PHP при обратном вызове при входе в систему с помощью Apple в Интернете
    Anonymous » » в форуме Php
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Потеря файла cookie сеанса PHP при обратном вызове при входе в систему с помощью Apple в Интернете
    Anonymous » » в форуме Php
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Php»