php сохранение идентификатора пользователя в сеансе?

Мне интересно, какие риски хранят идентификатор пользователя в сеансе?

затем просто

if(isset($_SESSION['user_id'])){ login_user($_SESSION['user_id]); } 

Являются ли сеансы зашифрованными настолько, что нам не придется беспокоиться о их хэшировании? Каковы шансы, что кто-то сможет изменить свой ID?

Сеанс по умолчанию хранится в /tmp в виде файла. Конечный пользователь не может быть просмотрен, если у вас нет таких проблем безопасности, как уязвимости в обход каталога .

Единственная часть, которую видит клиент, – это уникальный хэш, хранящийся в файле cookie, который сопоставляется с соответствующим сеансом на сервере.

Большинство приложений используют $_SESSION как есть. Если там, где широко распространенная слабость, тогда крупные проекты будут делать что-то по-другому.

Хранение идентификатора пользователя в $ _SESSION является достаточно распространенной практикой.

Альтернативой может быть сохранение информации о сеансе (включая текущий идентификатор пользователя) в таблице с использованием session_id () в некоторой форме в качестве ключа.

Информация сеанса хранится как обычный текст.

В зависимости от вашей настройки местоположение сеанса должно быть безопасным на правильно настроенном сервере. Можно изменить местоположение с помощью session_save_path (), который позволит преодолеть потенциальные проблемы с местоположением.

Если кто-то может получить доступ к вашей сессии, он, вероятно, может получить гораздо больше. Я бы не хэш его, а также убедитесь, что он не добирается до клиента

Я бы посоветовал не добавлять только идентификатор пользователя к сеансу. Например:

1: Создайте учетную запись в одном браузере и войдите в систему. Затем оставьте этот браузер открытым и перейдите на другой компьютер.

2: Войдите в ту же учетную запись и удалите ее. Теперь создайте новую учетную запись с другим паролем (с тем же именем пользователя, если оно используется как идентификатор).

3: Вернитесь на другой компьютер и делайте что-нибудь. Вы обнаружите, что теперь вполне возможно использовать учетную запись, сделанную на другом компьютере.

В принципе, поскольку сеанс хранит идентификатор, это может не обязательно принадлежать одному и тому же человеку в зависимости от того, какие учетные записи изменились и т. Д. И если пароль не требуется (поскольку вы уже прошли этот процесс, когда у вас была учетная запись), то это похоже к взлому.

Таким образом, у этого есть только шанс работать, если при удалении учетных записей пользователей из базы данных числовые идентификаторы могут быть повторно использованы (около 2% систем, которые я видел, делают это). Или, если идентификатор пользователя является именем пользователя (около 20%, я видел это).

Поэтому я хотел бы предложить добавить к сеансу идентификатор пользователя и хеш пароля (т. Е. Md5, sha1) и получить информацию о пользователе, используя каждый из них каждый раз.