Как работает флажок cookie «Безопасный»?

103

Я знаю, что файл cookie с secureфлагом не будет отправлен через незашифрованное соединение. Интересно, как это работает?

Кто отвечает за определение того, будет ли отправлен файл cookie или нет?

Тед
источник

Ответы:

93

Клиент устанавливает это только для зашифрованных соединений, и это определено в RFC 6265 :

Атрибут Secure ограничивает область cookie «безопасными» каналами (где «безопасный» определяется пользовательским агентом). Когда cookie имеет атрибут Secure, пользовательский агент будет включать cookie в HTTP-запрос, только если запрос передается по безопасному каналу (обычно HTTP через Transport Layer Security (TLS) [RFC2818]).

Атрибут Secure, который кажется полезным для защиты файлов cookie от активных сетевых злоумышленников, защищает только конфиденциальность файлов cookie. Активный сетевой злоумышленник может перезаписать защищенные файлы cookie из незащищенного канала, нарушив их целостность (подробнее см. В Разделе 8.6).

Кратил
источник
4
в случае, если на стороне клиента еще нет файлов cookie, и они должны быть отправлены со стороны сервера (например, при входе в систему), будет ли серверная сторона принимать решение о включении cookie в ответ?
ted
3
Сервер изначально устанавливает файлы cookie через «Заголовки Set-Cookie»
Иван
51

Еще одно слово по теме:

Недостаточно пропустить, secureпотому что ваш сайт example.comполностью https.

Если ваш пользователь явно достигает http://example.com, он будет перенаправлен, https://example.comно уже слишком поздно; первый запрос содержал cookie.

Ален Тьембло
источник
6
Я знаю, что это устарело, но предварительная загрузка HSTS помогает в этой ситуации, предотвращая частое возникновение этой проблемы. Это все еще не 100% исправление, но это еще одна вещь, которую следует учитывать, если вы действительно хотите избежать безопасных файлов cookie.
Mr. MonoChrome
5
@ Mr.MonoChrome Зачем вам избегать использования безопасных файлов cookie?
MEMark
@ Mr.MonoChrome, хотя некоторые браузеры со старыми или более низкими характеристиками, я полагаю, даже не поддерживают HSTS
oldboy
1
Хорошая точка зрения. Для приложений .NET лучше выполнять перенаправление в IIS (или web.config), чем программно (например, globals.asax)
piris
Так что, если бы вы не перенаправляли с http на https, а обслуживали только https, вам не понадобилось бы secure?
тормозит