Как я могу установить флаг безопасности для файла cookie сеанса ASP.NET?
-
22-07-2019 - |
Вопрос
Как установить флажок Secure для файла cookie сеанса ASP.NET, чтобы он передавался только через HTTPS, а не через обычный HTTP?
Решение
Существует два способа: один элемент 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>
Ситуация быстро меняется, если вы говорите о проверенном коде в корпоративной среде. Мы обнаружили, что наилучший подход состоит в том, чтобы 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.
secure - этот атрибут указывает браузеру отправлять cookie только в том случае, если запрос отправляется по безопасному каналу, например HTTPS. Это поможет защитить куки от незашифрованных запросов. Если к приложению можно получить доступ как по HTTP, так и по HTTPS, существует вероятность, что cookie можно отправить в виде открытого текста.