изменение данных в переменной $ _SESSION - PullRequest
0 голосов
/ 11 июня 2009

В настоящее время у меня в конструкторе хранятся переменные в $_SESSION.

Мне сказали не хранить user_id в $_SESSION, потому что тогда пользователь может изменить идентификатор на свое усмотрение, а затем свободно заходить на сайт из любой учетной записи. Вместо этого я сохранил session_id и создал таблицу, в которой есть ссылки session_id на user_id.

Мой вопрос - насколько сложно манипулировать этими данными? У меня также есть система магазинов в моем проекте, и я понял, что не смогу хранить такие вещи, как идентификатор владельца магазина в переменной $_SESSION. Это привело бы к тому, что я запрашивал базу данных на каждой странице, по крайней мере, для получения данных.

Насколько небезопасно хранить информацию такого типа в $_SESSION? У кого-нибудь есть лучшее решение?

Ответы [ 3 ]

8 голосов
/ 11 июня 2009

Тот, кто сказал вам, что это неправильно; пользователь не может изменить данные, которые вы храните в массиве $_SESSION. Пользователь может отредактировать файл cookie, установленный с помощью sessionid, чтобы PHP мог распознать этого пользователя. Однако они не могут реально изменить его на sessionid другого пользователя. Единственная опасность, которую вы запускаете, заключается в том, что кто-то каким-то образом получит cookie-файл сессионного пользователя, и в этом случае он может выдать себя за зарегистрированного пользователя на вашем веб-сайте, но вы ничего не можете с этим поделать, кроме некоторой проверки IP.

2 голосов
/ 11 июня 2009

Тот, кто сказал вам, что был неправ.

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

1 голос
/ 11 июня 2009

Данные сеанса хранятся веб-сервером во временных файлах (по умолчанию) или в БД или где-то еще (вы можете настроить их). Поэтому конечный пользователь не может ничего изменить в ваших данных $ _SESSION, если вы не предоставите ему доступ по FTP / SSH к вашему серверу. Единственное, что он может изменить, - это идентификатор сессии в запросе, но в этом случае нет ничего небезопасного. Что ж, надеюсь, ваш «советник» узнает больше о HTTP-сессиях и о том, как они работают.

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