Как установить флажок Secure для файла cookie сеанса ASP.NET, чтобы он передавался только по HTTPS, а не по обычному HTTP?
146
Как установить флажок Secure для файла cookie сеанса ASP.NET, чтобы он передавался только по HTTPS, а не по обычному HTTP?
Есть два способа, один httpCookies
элемент в которых web.config
позволяет вам включать requireSSL
только те куки, включая сеанс только в SSL, а также внутри аутентификации форм, но если вы включаете SSL в httpcookies, вы также должны включить его и внутри конфигурации форм.
Отредактируйте для ясности:
вставьте это в<system.web>
<httpCookies requireSSL="true" />
<httpCookies requireSSL="true" />
В
<system.web>
элемент добавьте следующий элемент:Однако, если у вас есть
<forms>
элемент в вашемsystem.web\authentication
блоке, это переопределит настройку вhttpCookies
, установив его обратно в значение по умолчаниюfalse
.В этом случае вам также необходимо добавить
requireSSL="true"
атрибут в элемент формы.Так что в итоге вы получите:
Смотрите здесь и здесь для MSDN документации этих элементов.
источник
roleManager
элемент, его атрибутcookieRequireSSL="true"
также должен быть установлен в true. Ссылка msdn.microsoft.com/en-us/library/…Все становится быстро, если вы говорите о проверенном коде в корпоративной среде. Мы обнаружили, что наилучшим подходом является наличие в файле web.Release.config следующего содержания:
Таким образом, разработчики не будут затронуты (работают в Debug), и только те серверы, которые получают сборки Release, требуют, чтобы куки были SSL.
источник
безопасный - этот атрибут указывает браузеру отправлять куки, только если запрос отправляется по безопасному каналу, такому как HTTPS. Это поможет защитить куки от незашифрованных запросов. Если к приложению можно получить доступ как по HTTP, так и по HTTPS, существует вероятность, что cookie может быть отправлен в виде открытого текста.
источник
Основываясь на ответе @Mark D, я бы использовал преобразования web.config, чтобы установить для всех различных файлов cookie значение Secure. Это включает в себя настройку
anonymousIdentification cookieRequireSSL
иhttpCookies requireSSL
.Для этого вы должны настроить свой web.Release.config как:
Если вы используете роли и формы проверки подлинности с
ASP.NET Membership Provider
(я знаю, это древний) , вы также хотите установитьroleManager cookieRequireSSL
и теforms requireSSL
атрибуты надежно защищены. Если это так, ваш web.release.config может выглядеть так (включен выше, плюс новые теги для членства API):Фон на web.config преобразуется здесь: http://go.microsoft.com/fwlink/?LinkId=125889
Очевидно, что это выходит за рамки первоначального вопроса OP, но если вы не установите их все для защиты, вы можете ожидать, что средство сканирования безопасности заметит, и вы увидите красные флажки в отчете. Спроси меня, откуда я знаю. :)
источник