php использует сессии или куки для авторизации пользователя - PullRequest
0 голосов
/ 02 апреля 2011

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

Однако я использую функцию hash_hmac (md5) с IP-адресом пользователя, паролем и датой окончания срока действия файлов cookie, и никто не может расшифровать мой зашифрованный код файлов cookie. Теперь я думаю, что куки могут быть такими же безопасными, как и сессии. Теперь мне интересно, будет ли использование куки быстрее сеансов или нет. Я провел несколько тестов и обнаружил, что использование файлов cookie быстрее, чем использование сеансов.

Однако я все же хочу узнать, почему WordPress не использует сессии для процесса аутентификации. Может быть, я что-то пропустил, потому что многие из моих друзей по кодированию предпочитают их обоих для авторизации. Кто-нибудь даст мне знать об этой проблеме? Спасибо.

1 Ответ

1 голос
/ 04 апреля 2011

Я использую функцию hash_hmac (md5) с IP-адресом пользователя, паролем и датой окончания срока действия файлов cookie, и никто не может расшифровать мой зашифрованный код файлов cookie

Вы просто подписываете данные cookie с помощью HMAC? Похоже на это. Все, что делает HMAC, это доказывает, что сообщение не было подделано. Кроме того, ограничение IP-адресов будет сильно раздражать пользователей за некоторыми прокси-серверами.

Поскольку HMAC - это просто подпись , данные cookie все еще могут быть прочитаны и полностью не зашифрованы, если вы не сделали это отдельно. Если вы поместили в этот файл cookie какие-либо данные, которые позволили бы третьей стороне контролировать доступ к сайту для подключения в качестве вашего пользователя (например, простой несоленый хэш пароля пользователя), то HMAC совершенно бесполезен.

Если вы хотите поместить конфиденциальную информацию в файл cookie, вам следует использовать здесь шифрование real , а не просто для подписи данных. (Читайте: делайте оба.)

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

Но давайте перейдем к сути вопроса:

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

Если вы пытаетесь сделать так, чтобы логин пользователя сохранялся дольше, чем продолжительность сеанса, тогда куки-файлы в значительной степени являются наиболее эффективным инструментом. Однако вам не нужно (читай: не следует) хранить любую интересную информацию в куки. Вы можете просто сохранить хэш некоторых случайных данных и идентифицировать их в базе данных как принадлежащие указанному пользователю. Здесь могут вступить в действие ограничения вашего браузера / IP. Если пользователь не в данный момент вошел в систему, проверьте куки. Если он все еще действителен, установите его данные сеанса и сгенерируйте cookie с новым хешем, аннулируя старый.

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

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

...