Как я могу установить флаг Secure в Cookie Session ASP.NET, чтобы он передавался только через HTTPS и никогда не превышал простой HTTP?
Как установить флаг безопасности в cookie сессии ASP.NET?
Ответ 1
Существует два способа: один элемент httpCookies
в web.config
позволяет включить requireSSL
, который передает только файлы cookie, включая сеанс только в SSL, а также внутри собственной проверки подлинности, но если вы включите SSL на httpcookies, вы также необходимо включить его также в конфигурацию форм.
Изменить для ясности:
Поместите это в <system.web>
<httpCookies requireSSL="true" />
Ответ 2
В элементе <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>
Ответ 3
Вещи становятся беспорядочными, если вы говорите о зарегистрированном коде в корпоративной среде. Мы обнаружили, что лучший подход состоит в том, чтобы web.Release.config содержать следующее:
<system.web>
<compilation xdt:Transform="RemoveAttributes(debug)" />
<authentication>
<forms xdt:Transform="Replace" timeout="20" requireSSL="true" />
</authentication>
</system.web>
Таким образом, разработчикам не влияет (работает в Debug), и только серверы, которые получают версии Release, требуют, чтобы файлы cookie были SSL.