Шифрование файлов cookie в PHP

Как я могу зашифровать и позже расшифровать значение cookie в PHP (насколько безопасным будет шифрование )

5 ответов


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

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


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

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


Я полностью согласен с другими ответами: если данные действительно чувствительны, они должны храниться на стороне сервера в сеансе, а не в файле cookie.

Что касается способов шифрования содержимого cookie, то Сухушина PHP расширение предоставляет возможность прозрачно зашифровать все cookies. Если у вас есть возможность установить расширения PHp, это может быть или не быть проще для Вас, чем писать собственную схему шифрования.


Я могу придумать разумное использование для этого. Предположим, у вас есть большая ферма серверов, у вас будет узкое место в базе данных и/или сервере memcached для обработки запросов сеанса.. "этот пользователь вошел в систему?"

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

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


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