Я использую функцию hash_hmac (md5) с IP-адресом пользователя, паролем и датой истечения срока действия файлов cookie, и никто не может расшифровать мой зашифрованный код файлов cookie.
Вы просто подписываете данные cookie с помощью HMAC? Похоже на то. Все, что делает HMAC, — это доказывает, что сообщение не было подделано. Кроме того, ограничение IP-адреса будет сильно раздражать пользователей за определенными прокси-серверами.
Поскольку HMAC — это просто подпись, данные cookie по-прежнему могут быть прочитаны и полностью не зашифрованы, если только вы не сделали это отдельно. Если вы поместили в этот файл cookie какие-либо данные, которые позволили бы третьей стороне отслеживать доступ к сайту в качестве вашего пользователя (например, простой несоленый хэш пароля пользователя), то HMAC совершенно бесполезен.
Если вы хотите поместить конфиденциальную информацию в файл cookie, вы должны использовать здесь настоящее шифрование, а не просто подписывать данные. (Читайте: сделайте и то, и другое.)
Если вы не можете выполнить фактическое шифрование данных, а данные настолько опасны, что их необходимо защитить от посторонних глаз, вам не следует отправлять их в файле cookie. Или весь ваш сайт должен обслуживаться через SSL. Или оба.
Но давайте перейдем к сути вопроса:
Если вы пытаетесь просто определить, вошел ли текущий пользователь в систему, сеансы — это фантастический выбор. Трудно заставить их не работать.
Если вы пытаетесь сделать так, чтобы логин пользователя сохранялся дольше, чем продолжительность сеанса, то файлы cookie являются наиболее эффективным инструментом. Однако вам не нужно (читай: не следует) хранить в куки какую-либо интересную информацию. Вы можете просто сохранить хэш некоторых случайных данных и идентифицировать его в базе данных как принадлежащий указанному пользователю. Здесь могут вступить в игру ограничения вашего браузера/IP. Если пользователь сейчас не вошел в систему, проверьте файл cookie. Если он все еще действителен, установите их данные сеанса и повторно сгенерируйте файл cookie с новым хешем, сделав недействительным старый.
Обязательно настройте его так, чтобы один и тот же пользователь мог входить в систему на разных машинах, не выходя из системы с других. Это чертовски раздражает.
Что касается того, почему Wordpress якобы избегает сеансов... ну, Wordpress не является образцом хорошего дизайна и пошел на огромные компромиссы во имя работы практически везде. . Виртуальный хостинг — это ад.
person
Charles
schedule
04.04.2011