Вопрос безопасности Codeigniter/PHP

Я разрабатываю веб-приложение с помощью Codeigniter. Когда пользователь проходит аутентификацию с моего сайта, я в настоящее время храню свой "идентификатор пользователя" в своем cookie сеанса (на котором я включил шифрование). Некоторые из моих классов моделей используют значение в параметре user-identifier session/cookie для внесения изменений в свойства учетных записей пользователей.

Мое беспокойство заключается в том, что мне интересно, может ли кто-нибудь принять допустимый файл cookie-кода с идентификатором пользователя, который я установил, изменить значение идентификатора пользователя на значение другого пользователя и внести изменения в другую учетную запись пользователя. Если бы команды codeigniter/php создавали ошибку, если кто-то пытался изменить свойство cookie сеанса?

Ответ 1

Откройте файл /application/config/config.php, найдите "sess_use_database" и измените его на "TRUE", если вы еще этого не сделали. Таким образом, все переменные сеанса будут храниться в таблице базы данных, а cookie сеанса будет содержать только строку идентификатора сеанса.

Для дополнительной безопасности вы также можете изменить "sess_match_ip" на TRUE. Таким образом, если кто-то украдет ваш cookie пользователя и попытается передать его как свой, сеанс будет уничтожен.

Ответ 2

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

Мой ответ на самом деле не связан с CI, поэтому, пожалуйста, помните об этом.

Когда вы авторизуете пользователя "username1", то, что должно быть отправлено обратно клиенту, для целей auth должно быть хешем, который сервер соответствует этому пользователю. Вся связь между клиентом и сервером будет основана на этом хеше.

Сервер будет генерировать уникальный хеш для каждого пользователя, и хэш должен иметь короткое время для жизни. Может ли кто-то захватить хэш и пройти как этот пользователь? Безусловно. Вот почему вы также должны проверить, чтобы агент и IP-адрес пользователя проверяли, соответствуют ли они хешу, чтобы предотвратить захват сеанса.

НИКОГДА НЕ ДЕЛАЙТЕ ЭТО:
Если замечены некоторые новые разработчики, которые хранят имя пользователя в cookie и полагаются на эту клиентскую переменную, чтобы обновлять свои базы данных. Никогда не делай этого. Никогда не доверяйте клиенту. Когда сервер получает хеш-клиент, он должен проверить, принадлежит ли он аутентифицированному пользователю и захватить user_id (переменную для обновления пользовательских данных) с сервера. НИКОГДА от клиента.

Ответ 3

Я не уверен, что именно ваш "идентификатор пользователя". Общее правило: не храните ничего в файле cookie сеанса, кроме идентификатора сеанса. Храните все остальное (например, идентификатор пользователя) на стороне сервера и извлекайте его с помощью идентификатора сеанса.

Если пользователь изменяет идентификатор сеанса (который является случайной строкой), начнется новый сеанс. Идея идентификатора сеанса заключается в том, что невозможно угадать другие идентификаторы пользователей - почему это случайный и так долго.