Как безопасно управлять подключенным пользователем

0

Я думаю, что я полагаю, как это сделать:

Когда мой пользователь подключается, после проверки того, имеет ли он хорошее имя пользователя/пароль, создается ключ сеанса (случайная длинная строка) и помещается внутри БД. Тот же session_key помещается внутри сеанса.

Если пользователь выходит из моего приложения без входа в систему, когда он вернется, если его session_key соответствует одному в БД, пользователь в порядке и подключится как пользователь, у которого есть этот session_key. Если нет, сеанс закрыт, пользователь перенаправляется для входа в систему. Если проблем нет, создается новая session_key (для замены старой).

Я думаю, что все будет хорошо, за исключением двух вещей:

-How Могу ли я заставить session_key исчезнуть из БД через определенное время? Думаю, я должен выполнить какой-то код на сервере, но как я могу выполнить код на сервере, если никто не использует мое приложение в течение определенного момента?

-If это просто session_key, нормально ли использовать cookie?

-Is ОК, чтобы просто проверить, есть ли session_key в БД, которые соответствуют сессии session_key в сеансе, или я должен использовать что-то еще, чтобы быть уверенным? Я буду генерировать случайную длинную строку и склеить ее так же, как и с паролем, поэтому я думаю, что он будет достаточно защищен и что вряд ли session_key будет идентичным.

-insteed использования имени пользователя для получения данных из БД, было бы хорошо использовать session_key (getStuffBySessionKey())?

  • 1
    Не связывайте содержимое файла cookie с чем-либо другим, кроме аутентификации. Используйте содержимое на сервере после аутентификации, чтобы сделать что-нибудь.
  • 0
    Если вы не уверены, как правильно использовать куки с системой входа в систему - используйте сеансы. Их безопаснее использовать (вы даже можете заполнить их пользовательскими данными, так как они будут сохранены на сервере).
Показать ещё 6 комментариев
Теги:
cookies

1 ответ

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

Что, если мой пользователь получит доступ к файлу cookie и изменит имя пользователя?

Там нет необходимости хранить имя пользователя в файле cookie. Файл cookie должен иметь только информацию ключа сеанса. Вы получите имя пользователя из этого через запрос db, когда пользователь попытается войти в систему. Если пользователь изменяет значение ключа сеанса в своем файле cookie, то он больше не будет соответствовать активному сеансу в базе данных, и им придется снова войти в систему. Это по сути то же самое, что очистка cookie.

Помимо имени пользователя и session_key, я буду добавлять пользовательские привилегии в файл cookie. Мне нужно, чтобы он знал, является ли пользователь администратором, создателем или посетителем.

Они также должны храниться в базе данных, а не в файле cookie.

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

Нет, вы должны проверять действительный активный сеанс по каждому запросу от пользователя. Если нет cookie сеанса или если cookie не соответствует действительному сеансу, перенаправите его на страницу входа.

Как указывали другие, вам было бы разумно использовать встроенные сессии PHP для всего этого.

  • 0
    Когда вы говорите «каждый запрос от пользователя», вы имеете в виду каждый раз, когда выполняется вызов в базу данных, и каждый раз, когда меняется маршрут?
  • 0
    Я имею в виду, что при каждой загрузке страницы (которая должна быть защищена этой системой входа в систему) вам необходимо проверять, что в запросе указан правильный сеанс в соответствующем файле cookie. Если нет, отправьте их на страницу входа!
Показать ещё 2 комментария

Ещё вопросы

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