Как установить флажок Secure на ASP.NET куки-файл сеанса?

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

3 ответов


есть два способа, один 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" атрибут к элементу forms также.

таким образом, вы в конечном итоге:

<system.web>
    <authentication mode="Forms">
        <forms requireSSL="true">
            <!-- forms content -->
        </forms>
    </authentication>
</system.web>

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


все быстро запутывается, если вы говорите о зарегистрированном коде в корпоративной среде. Мы обнаружили, что лучший подход-иметь web.Освобождать.config содержать следующее:

<system.web>
  <compilation xdt:Transform="RemoveAttributes(debug)" />
  <authentication>
      <forms xdt:Transform="Replace" timeout="20" requireSSL="true" />
  </authentication>
</system.web>

таким образом, разработчики не затрагиваются (работают в Debug), и только серверы, которые получают сборки выпуска, требуют, чтобы cookies были SSL.