Достаточно ли файлов cookie для хранения данных для входа? - PullRequest
2 голосов
/ 24 мая 2010

Я читаю книгу Head First PHP / Mysql, и они говорят, что нужно хранить имя пользователя, электронную почту в cookie и sessions.cookies? Должен ли я хранить как сеансы, так и куки или только один из них?

Я не храню в cookie-файлах конфиденциальные данные, такие как пароль и т. Д.

Ответы [ 7 ]

1 голос
/ 24 мая 2010

Можно ли предположить, что все знают, что в день есть куки? Или я должен хранить как в сеансах, так и в файлах cookie?

2 вопроса - но оба имеют одинаковые ответы.

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

Вы можете использовать постоянный файл cookie в качестве функции «запомнить меня», но посмотрите, как eBay, Google и др. Реализовали это - то есть, делайте это только по специальному запросу пользователя, и даже тогда рассматривайте его так, как если бы он были длительным сеансом (т.е. хранить данные на стороне сервера и помещать ссылку на данные в куки). В качестве альтернативы, как это .__curious_geek предлагает вам рассмотреть возможность шифрования - но имейте в виду, что это не обеспечивает защиты от атак MITM / воспроизведения.

Я не храню в cookie-файлах конфиденциальные данные, такие как пароль и т. Д.

Нет - имена пользователей и адреса электронной почты потенциально чувствительны.

С

1 голос
/ 24 мая 2010

Можно с уверенностью предположить, что у людей есть куки, если им нужно войти где-нибудь. Сессии на самом деле также полагаются на куки. Просто будьте осторожны, какие данные вы на самом деле поместили в куки.

0 голосов
/ 24 мая 2010

Очевидно, что никто из вас не прочитал его контекст. Он не имеет ни малейшего понятия, что такое печенье и что такое сессия.

Файл cookie, также известный как веб-файл cookie, файл cookie браузера и файл cookie HTTP, представляет собой текстовую строку, сохраняемую веб-браузером пользователя. (Wikipedia.org)

Сеанс сохраняется на веб-сервере с использованием идентификатора сеанса (идентификатора сеанса), сгенерированного в результате первого (иногда первого аутентифицированного) запроса от конечного пользователя, использующего веб-браузер. (Wikipedia.org)

Есть 2 разные вещи.

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

$ _SESSION на стороне сервера, его не нужно резко шифровать, потому что только ваши скрипты будут его читать.

$ _COOKIE должен быть всегда зашифрован, потому что браузеры (например, Firefox имеет тонну плагинов, которые печатают cookie в формациях) могут отображать их, зашифрованные таким образом, что единственное, что вы можете сделать, это сравнить его логин также зашифрован с помощью этого куки, чтобы увидеть, аутентифицирован ли он или нет. Сравнить не декодировать. Лучшее кодирование и простое шифрование - MD5 .

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

0 голосов
/ 24 мая 2010

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

0 голосов
/ 24 мая 2010

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

0 голосов
/ 24 мая 2010

Зависит от задачи и контекста.
В общем случае бесполезно хранить как файлы cookie, так и сессии. Сессия более надежный и безопасный способ.
Хотя, опять же, зависит от задачи. Почему вы хотите сохранить электронную почту? Вы вообще не сохраняете данные пользователя на стороне сервера?

0 голосов
/ 24 мая 2010

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

Вы также должны знать, что PHP по умолчанию использует куки для сохранения идентификатора сессии

...