Еще один секретный вопрос о сессиях - PullRequest
1 голос
/ 01 сентября 2011

Я пытаюсь сделать систему входа в систему. Что я делаю, когда пользователь входит в систему, я делаю сессию [' id '] и помещаю туда идентификатор пользователя. Также я делаю так называемую солёную штуковину, которая в порядке.

Теперь позже в какой-то части сайта я проверяю сессию [' id '] и проверяю, имеет ли такой идентификатор высокий уровень разрешений, и предоставляю этому пользователю некоторые функции. Также я могу проверить соль, если пользователь является тем же, кто вошел в систему, избегая хакеров и т.д. и т.д ....

Мой вопрос следующий. Если пользователь создает новую учетную запись. И войдя в систему, используя свой аккаунт, солевая система для него будет в порядке, поэтому он будет путешествовать по сайту, но его идентификатор будет немного низким, поэтому он не получит все функции. НО! Если пользователь поймет, что я проверяю его идентификатор, чтобы понять, кто он, может ли он после входа в систему каким-либо образом дать серверу другой сеанс [' id ']? например, пользователь, у которого высокий уровень, и получать все бонусы? , Потому что я сделал сессию

ini_set('session.use_only_cookies', true); 
session_start();

так, вероятно, все данные сеанса будут на его компьютере, верно? Так возможно ли это?

решено

Ответы [ 3 ]

2 голосов
/ 01 сентября 2011

Идентификатор сеанса должен быть полностью случайным числом.

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

Данные за сеансом хранятся только на вашем сервере.

Веб-браузеру присваивается только сам идентификатор сеанса.

ini_set ('session.use_only_cookies', true);

Указанный вами параметр просто гарантирует, что идентификатор сеанса доставляется только через cookie, а не как часть HTML или URL.

1 голос
/ 01 сентября 2011

Использование $ _SESSION прекрасно, потому что файл с фактическими данными в нем находится на сервере, а не на машине клиента.Клиент сохраняет только ссылку, поэтому PHP знает, где искать в файле cookie сеанса на сервере данные сеанса клиента.

0 голосов
/ 01 сентября 2011

Только файл cookie идентификатора сеанса (обычно PHPSESSID) находится на компьютере пользователя и отвечает за сообщение серверу, какой экземпляр сеанса используется. Данные, хранящиеся в $ _SESSION, находятся в безопасности на сервере, и если вы не отправите их клиенту вручную, никто за пределами сервера их не увидит.

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