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