PHP и куки - PullRequest
       27

PHP и куки

0 голосов
/ 30 сентября 2010

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

Я хочу перенаправить пользователя на страницу участников, если сохраненный идентификатор или имя пользователя сравнивается с тем, который хранится в базе данных.

Безопасно ли делать это с помощью файлов cookie и как я могу это сделать?

Ответы [ 5 ]

2 голосов
/ 30 сентября 2010

Не храните свое имя пользователя или пароль в куки. Всегда предполагайте, что каждый в Интернете может видеть каждый файл cookie на компьютере человека. Вместо этого вам нужно сохранить session_id и IP-адрес, с которого они получили доступ, в вашу таблицу MySQL, а затем сохранить session_id в cookie. Большинство браузеров очищают переменные сеанса, когда вы закрываете окно, но они не очищают куки. Поэтому вы сначала проверяете сеанс (они в настоящее время вошли в систему), и если они не вошли в систему, тогда вы проверяете cookie (были ли ранее вошли в систему, и что еще более важно - это был с этого IP-адреса?)

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

1 голос
/ 30 сентября 2010

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

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

0 голосов
/ 14 февраля 2013

Я только что написал это решение для всех, кому интересно.

http://rabbie.id.au/my-elegant-remember-me-solution-using-php-mysql-and-cookies/

0 голосов
/ 01 октября 2010

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

0 голосов
/ 30 сентября 2010

На своих сайтах я использую пользовательский класс Session. Это сохраняет sess_id и sess_hash в cookie, который является уникальным для текущего пользователя. IP-адрес также сохраняется в базе данных и сравнивается с текущим IP-адресом, чтобы убедиться, что это тот же компьютер, но это не основной механизм аутентификации. Затем данные сохраняются, сериализуются и base64'd в базе данных. Я бы не советовал использовать сессии PHP, потому что к ним может обратиться любой пользователь с идентификатором. Кто-то, кто публикует ссылку на что-то с PHPSESSID, может, например, позволить им войти в свою учетную запись.

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