Я создал систему входа в систему с использованием сеансов PHP.Безопасен ли этот сеанс входа в систему?
Вот как это работает:
1.), когда пользователь входит в систему (с действительной информацией авторизации): Их информация (username
и password
) хранятся в сессии, наряду с несколькими другими битами info: The Expire time
: Это всего лишь 5 минут добавлено в текущее время (так что если вход пользователя в 22:30, время истечения будет 22:35).
2.) На каждом просмотре страницы пользователя, входящего в систему: Сессия проверяется, существует ли она. Если это не так, пользователь перенаправляется на страницу входа в систему. Если сеанс действительно существует, он затем проверяет expire time
и сравнивает его с current time
. Если expire time
больше, чем current time
(пользователь неактивен на 5+ минут), то их данные пользователя (в сеансе) проверяются (по сравнению с данными в базе данных), а сеанс Expiretime
обновляется, но если expire time
меньше затем current time
, он не будет проверять какие-либо детали, обновляет сеанс expire time
и позволит пользователю продолжать. Ive сделал это, чтобы предотвратить постоянный запрос в БД для экономии пропускной способности.
Так что, как только пользователь успешно выполнит вход в систему, их имя пользователя и пароль не будут проверены на БД еще до того, как они либо станут неактивными (останутся на одной странице) в течение 5+ минут, либо если они выйдут из системы.
Забыла упомянуть что-то ребята: Срок истекает время сеанса на самом деле называется expire_time_unique_characters
($_SESSION['expire_time_'.$unique_nu]
), что означает, что злой человек также должен найти $unique_nu
когда притворяется сеанс ...
Я просто это ощущение, что оно не очень безопасно.
Кроме того, проект это для является открытым исходным кодом (люди могут видеть исходный код), так что создает еще более высокий риск здесь ...
вы, ребята, дайте мне некоторую обратную связь?
Благодаря
Зачем хранить комбинацию пользователя/пароля на сервере в открытом виде? Как _that_ должен улучшить безопасность? Если пользователь/пароль был ошибочным, чем не было установлено в первый раз, правильно? –
@Niklas Сессия будет создана только после успешного завершения входа в систему. –
Затем вам не нужно повторно проверять комбинацию входа каждые несколько минут. Просто не храните имя пользователя и пароль на сервере. Кроме того, не храните их в базе данных! Используйте сильный алгоритм хэширования для этого (желательно с растяжением ключа) –