Шифрование файлов 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. Зачем хранить его на сервере? Заставьте клиента сделать какую-то работу для разнообразия, особенно если это предпочтения. Почему сервер должен постоянно хранить и извлекать данные из файла сеанса? Что делать, если у вас есть сотни тысяч пользователей стучать ваш сайт? Теперь вы должны поддерживать сотни тысяч файл сеанса.