Как начать работу с идентификаторами сессий в PHP и MySQL?

0

Поэтому я недавно принял решение использовать идентификатор сеанса для проверки подлинности на своем веб-сайте вместо JWT, поэтому я все еще пытаюсь немного догнать здесь.

Думаю, моя забота довольно проста. Если я буду иметь мою базу данных обрабатывать мои сеансы, которые в данный момент активны для пользователей, которые вошли в системе (возможно, через таблицу, которая имеет столбец с UserID и SessionID), как я могу использовать PHP для создания полностью случайную сессии Я БЫ? Затем я httpOnly этот идентификатор сеанса в httpOnly cookie httpOnly.

Я предполагаю, что это будет работать с моим интерфейсом Angular, поскольку я могу использовать логическую опцию withCredentials для каждого HTTP-запроса, так как у меня не будет прямого доступа к cookie идентификатора сеанса.

Поэтому, когда пользователь хочет получить доступ к запрещенной зоне, их HTTP-запрос будет содержать cookie идентификатора сеанса, и мой PHP определит, что их идентификатор пользователя, выполнив поиск в таблице CurrentSession. Это позволит PHP определить уровень доступа пользователя.

Все это будет сделано через соединение HTTPS, но я думаю, что мне все равно придется беспокоиться о атаках CSRF, поэтому я, вероятно, буду использовать метод Double Submit Cookie, поскольку Angular уже поддерживает его.

Поэтому я предполагаю, что мой главный вопрос заключается в том, как просто найти способ создания уникального идентификатора сеанса с помощью PHP для защиты моего приложения? Или каким-то образом шифрование идентификатора сеанса, так что только мой PHP может расшифровать его, это хорошая идея, поэтому, если каким-то образом злоумышленник получил доступ к идентификатору сеанса из файла cookie, он был бы исключительно зашифрованной версией, поэтому он был бы бесполезен,

  • 0
    Одним из способов может быть: 1) использовать CSPRNG для генерации идентификатора сеанса 2) сохранить идентификатор сеанса в подписанном файле cookie
Теги:
cookies
session

1 ответ

1
Лучший ответ

Я бы предложил использовать PHP session_start(), который будет обрабатывать весь сеанс, включая любые файлы cookie, которые необходимо записать для поддержки сеанса в зависимости от вашего конкретного соединения в то время.

Все, что вам нужно сделать, это поставить это на вершине ваших PHP-скриптов:

<?php
session_start();

Постоянный "SID" PHP должен быть доступен, чтобы получить идентификатор сеанса, который вы могли бы хранить в MySQL для других целей, если хотите - но это может и не понадобиться. Вы также можете использовать session_id().

  • 0
    Да, вчера вечером я создал собственный обработчик сохранения сеанса, чтобы он мог работать с моей базой данных. Я думаю, что просто использование сессий PHP по умолчанию будет отлично работать для моего приложения. Вы случайно не знаете, будет ли для меня хорошей идеей использовать упомянутый мной метод Double Submit Cookie для защиты от CSRF-атак?
  • 0
    Если вы хотели бы. Я надежно пользуюсь сессией PHP, но если вам нужна дополнительная безопасность, это, конечно, не повредит. Сеансы PHP могут быть взломаны, но если вы https, я думаю, это будет довольно сложно (включая атаку MITM и CSRF).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню