Как установить флаг безопасности в cookie сессии ASP.NET?

Как я могу установить флаг Secure в Cookie Session ASP.NET, чтобы он передавался только через HTTPS и никогда не превышал простой HTTP?

Ответ 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>

Смотрите здесь и здесь для документации MSDN этих элементы.

Ответ 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.