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

StackOverflow https://stackoverflow.com/questions/1442863

  •  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>

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

Ситуация быстро меняется, если вы говорите о проверенном коде в корпоративной среде. Мы обнаружили, что наилучший подход состоит в том, чтобы 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 можно отправить в виде открытого текста.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top