Какую информацию можно хранить в файлах cookie?
Когда вы думаете о безопасности и опыте пользователя, какую информацию в порядке, приемлемую или даже хорошую идею хранить в cookie?
РЕДАКТИРОВАТЬ:
С пониманием, что конфиденциальная информация, такая как имена пользователей, пароли, SSN, номера кредитных карт, не принадлежит, что делает?
8 ответов
Определенно не пароли! Или что-нибудь деликатное... помните, что куки хранятся на компьютерах людей, поэтому, с вашей точки зрения (как разработчик веб-сайта), они в основном находятся на свободе, потенциально доступны для всех.
Обычной практикой является просто сохранение идентификатора сеанса в файле cookie и сохранение всей другой соответствующей информации в базе данных (или файле, или чего-либо еще) на сервере, проиндексированном по идентификатору сеанса.
Гораздо проще ответить на вопрос, что нельзя хранить в cookie-файлах. Все, что должно оставаться безопасным, не должно храниться. Это включает пароли, номера кредитных карт, номера социального страхования и т. Д.
Я думаю, что можно хранить имя пользователя, так как эта информация на самом деле не является конфиденциальной. Настройки предпочтений пользователя для вашего сайта также должны быть в порядке.
Помните, что куки-файлы - это просто текстовые файлы, которые кто-то (или какое-либо приложение) может открывать и читать или записывать, поэтому вы не должны доверять информации, которую вы получаете от куки-файлов. Дезинфицируйте его так же, как любой другой пользовательский ввод.
Одним из предложений является то, что вы не храните какие-либо ключи к вашей базе данных в куки. т.е. адреса электронной почты, идентификаторы столбцов и т. д. Если это так, вам следует зашифровать данные.
- Идентификатор пользовательской настройки (набор предпочтений, сохраненный в БД, который вы выбираете при загрузке страницы)
- Нет личной информации
Ну, кроме конфиденциальных и связанных с безопасностью данных, на самом деле нет предела тому, что вы не можете и можете хранить, но просто помните, что если эти данные не сохраняются на стороне сервера, они могут быть потеряны вообще, и следует предположить, что если пользователь удаляет куки, ему не будет слишком неудобно восстанавливать его настройки / конфигурацию. Здесь нет никаких руководящих принципов, кроме как использовать здравый смысл.
Однако существуют ограничения на использование файлов cookie. Вы не должны превышать 19 файлов cookie на домен, и размер файлов cookie не должен превышать 4 КБ (4096 байт) в соответствии с ограничениями IE:
Каждый файл cookie начинается с пары имя-значение. За этой парой следует ноль или несколько пар атрибут-значение, разделенных точками с запятой. Для одного доменного имени каждый файл cookie ограничен 4096 байтами. Эта сумма может существовать в виде одной пары имя-значение 4 килобайта (КБ) или до 20 пар имя-значение, которые составляют 4 КБ. Если на компьютере недостаточно места для сохранения файла cookie, файл cookie удаляется. Это не усечено. Приложения должны использовать как можно меньше файлов cookie и как можно меньше файлов cookie. Кроме того, приложения должны быть в состоянии справиться с потерей cookie.
Если веб-приложение использует более 19 пользовательских файлов cookie, состояние сеанса ASP может быть потеряно. Internet Explorer 4.0 и более поздние версии позволяют в общей сложности 20 файлов cookie для каждого домена. Поскольку ASPSessionID является файлом cookie, если вы используете 20 или более пользовательских файлов cookie, браузер вынужден отказаться от файла cookie ASPSessionID и потерять сеанс.
Не храните в Cookie ничего, что позволит взломать ваш сайт или получить к нему доступ без использования соответствующих каналов. Обычно, только идентификатор сеанса или идентификатор пользователя хранятся в cookie, и часто в форме, предназначенной для того, чтобы быть непрозрачной для любого, кроме потребителя cookie.
Я бы не стал хранить что-либо, что, в случае изменения, поставило бы под угрозу функциональность сайта.
Таким образом, хранить что-то вроде идентификатора пользователя, цены товаров в корзине, пароль, роли пользователя и т. Д. Проблематично. Я храню подобные вещи в данных сеанса пользователя на сервере.
Сохранение имени пользователя или информации о профиле (только для отображения), предпочтения настройки (цвета, текст, что угодно) в порядке.
Нет ничего плохого в том, чтобы сохранять конфиденциальную информацию в файле cookie, если эта информация зашифрована (сами данные не являются открытым текстом), а файл cookie является безопасным файлом cookie (https). На самом деле, гораздо хуже, если на одном сервере БД хранятся все конфиденциальные данные, которые могут быть взломаны, и тогда вы сталкиваетесь с потенциально гораздо большей проблемой безопасности.