Какой лучший способ защитить данные cookie для входа в PHP? - PullRequest
5 голосов
/ 21 июня 2010

Я создаю систему входа в систему на PHP и хочу знать, как лучше защитить строку с информацией о пользователе в моем файле cookie. Я думал о шифровании строки ключом как-то? Это лучший способ? Я немного новичок в этом.

Заранее спасибо.

Ответы [ 5 ]

23 голосов
/ 21 июня 2010

Не храните конфиденциальную информацию в куки. Сохраните хэш идентификатора сеанса, чтобы подключить вошедшего в систему пользователя к его учетной записи.

4 голосов
/ 25 июня 2010

Аарон Харун имеет правильный ответ для вас.По сути, нет необходимости шифровать такие данные, пока вы храните их в сеансе, потому что эти данные никогда не доходят до клиента / браузера / пользователя, так как все они находятся на стороне сервера.Когда вы создаете сеанс на PHP, он обрабатывает файлы cookie для вас, так что вам не нужно об этом беспокоиться.В большинстве случаев нет необходимости иметь дело с куки.В сфере безопасности работа с файлами cookie является вредной.

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

Если вы действительно думаете, что это хорошая идея - создать систему аутентификации, основанную на домашнем пиве, сначала вам нужно спроектировать базу данных.Не храните незашифрованные пароли, вместо этого сохраняйте хеш (например, md5, sha-1 и т. Д.), И в этот момент не будет никакого вреда при создании соли для каждого пароля (случайная строка, которую вы добавляете к паролю пользователя перед его хэшированием,и сохраните эту соль с помощью хэша пароля, потому что он понадобится вам позже - это предотвратит атаки по хешу в словаре, то есть радужные таблицы).

2 голосов
/ 21 июня 2010

Вы никогда не должны хранить безопасную информацию в куки.Файлы cookie сохраняются в текстовом формате на компьютере пользователя, и существует множество причин, по которым вам никогда не следует хранить в них конфиденциальную информацию:

  1. Файлы cookie в основном представляют собой текстовые файлы, которые могут быть открыты любым пользователем на компьютере,с любым текстовым редактором.
  2. Файлы cookie хранятся на компьютере пользователя, это означает, что у него нет ограничения по времени, без ограничения соединения, без ограничения обработки, поэтому он может пытаться перебирать любые данные столько, сколько ему захочетсяне беспокоясь о том, что ip забанят / пнут ...

Вам следует хранить только такие вещи, как имя пользователя, которое нужно запомнить, или идентификатор сессии.

0 голосов
/ 25 июня 2010

Вы получаете сеансы бесплатно!То есть данные, хранящиеся на стороне сервера, автоматически обрабатываются PHP / framework-of-your-choice.Вы просто помещаете данные в сеанс, который связан со случайным UID, хранящимся в сеансах клиентов.На стороне клиента это сессионный cookie.Этот идентификатор генерируется автоматически, вы можете детализировать поведение manually.

Данные, хранящиеся на стороне клиента, никогда не бывают безопасными, реальное шифрование недоступно.Сессии, которые вам все равно понадобятся для отслеживания зарегистрированных пользователей.Если у вас много данных, вы можете использовать идентификатор для идентификации связанных данных из других хранилищ данных (БД, XML и т. Д.)

0 голосов
/ 21 июня 2010

Если вы абсолютно ДОЛЖНЫ хранить информацию в cookie-файле вместо сеанса пользователя, рассмотрите возможность подписания с помощью HMAC .Функция hash_hmac встроена в современные версии PHP.

Если вы сохраняете логин пользователя для функции «запомнить меня», сохраняйте как идентификатор пользователя, так и хэш информации, которыйдоступно только в вашей базе данных.Например, хеширование имени пользователя и пароля и сохранение его с идентификатором пользователя в файле cookie является достаточно безопасным.Если пользователь когда-либо изменит свой пароль, все машины, на которых он вошел с помощью этого метода, будут признаны недействительными, и нет способа просто изменить идентификатор в файле cookie и все равно войти в систему, поскольку хэш имени пользователя / пароля не будет совпадать.

...