Браузер просто отправляет все неиспользованные HTTP-куки (не связанные с SSL!) В «cookie jar», который соответствует домену (и, возможно, путь ) исходящего HTTP-запроса: один раз в "cookie jar", cookie отправляется автоматически для всех будущих запросов. Файлы cookie, отправленные с сервера через заголовок Set-Cookie
, добавляются автоматическик «банке печенья», но, как отмечалось, куки также могут быть добавлены из JavaScript *.В обоих случаях клиент / браузер отправляет cookie обратно на сервер через заголовок Cookie
.
Именно поэтому , как и все пользовательские вводы, к cookie-файлам следует относиться с осторожностью, а должен быть подтвержден / подтвержден при каждом запросе операций, "чувствительных к безопасности".Обычно используется сессионный cookie , который обеспечивает эту защиту, будучи формой nonce , поскольку они являются (или должны быть) большими криптографически случайными числами, которыеникогда не используются повторно и не могут быть предсказаны.
Сеансовый cookie / nonce - это просто просмотр постоянного хранилища (обычно базы данных), содержащего состояние, такое как «идентификатор пользователя».Это сочетание характеристик разделения и одноразового номера, которые не позволяют клиентам выбирать свой собственный «идентификатор пользователя», основываясь только на значении файла cookie, но ...
... "безопасность" - сложная темаи сеансовые куки не не защищают от любого вредоносного JavaScript, такого как тот, который использует CSRF или аналогичный, и они не предлагают никакой помощи против атак "человек посередине" или подслушивания,и эффективны только против повторных атак, поскольку их время истечения.Другой (часто упускаемый из виду) подход к проверке cookie-файлов заключается в использовании защищенного от несанкционированного доступа хеш-проверки, например, того, что ASP.NET делает с состоянием просмотра.
Серверная программа, которая слепо использует / доверяет LoggedInUserId
или IsAdministrator
куки были бы действительно очень небезопасными!:)
Счастливое кодирование.
* Все самые последние браузеры поддерживают HTTPOnly куки, которые не могут быть прочитаны / перезаписаныJavaScript: они все еще могут быть подделаны другими программами, однако!(Некоторые браузеры в последнее время получили поддержку только: Chrome 12, iOS4, Safari 5.)