Відповіді:
Є два способи, один httpCookiesелемент web.configдозволяє вмикати, requireSSLякий передає лише всі файли cookie, включаючи сеанс тільки в 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>
roleManagerелемент, його атрибут cookieRequireSSL="true"також повинен бути встановлений у true. Реф. msdn.microsoft.com/en-us/library/…
Речі швидко заплутаються, якщо ви говорите про зареєстрований код у корпоративному середовищі. Ми виявили, що найкращим підходом є те, щоб web.Release.config містив наступне:
<system.web>
<compilation xdt:Transform="RemoveAttributes(debug)" />
<authentication>
<forms xdt:Transform="Replace" timeout="20" requireSSL="true" />
</authentication>
</system.web>
Таким чином, на розробників не впливає (працює в Налагодженні), і лише сервери, які отримують версії версій, вимагають, щоб куки були SSL.
secure - Цей атрибут повідомляє браузеру надсилати файли cookie лише у випадку, коли запит надсилається через захищений канал, наприклад HTTPS. Це допоможе захистити файл cookie від передачі нешифрованих запитів. Якщо в програмі можна отримати доступ як через HTTP, так і HTTPS, існує певна можливість, що файл cookie може бути надісланий чітким текстом.
Спираючись на відповідь @Mark D, я б використовував web.config перетворення, щоб встановити всі різні файли cookie на безпечне. Це включає налаштування anonymousIdentification cookieRequireSSLта httpCookies requireSSL.
З цією метою ви налаштували веб-сторінку.Release.config як:
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.web>
<httpCookies xdt:Transform="SetAttributes(httpOnlyCookies)" httpOnlyCookies="true" />
<httpCookies xdt:Transform="SetAttributes(requireSSL)" requireSSL="true" />
<anonymousIdentification xdt:Transform="SetAttributes(cookieRequireSSL)" cookieRequireSSL="true" />
</system.web>
</configuration>
Якщо ви використовуєте автентифікацію ролей і форм з ASP.NET Membership Provider(я знаю, це давнє), ви також хочете встановити roleManager cookieRequireSSLі forms requireSSLатрибути як безпечні. Якщо так, ваш web.release.config може виглядати приблизно так (включено вище плюс нові теги для API членства):
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.web>
<httpCookies xdt:Transform="SetAttributes(httpOnlyCookies)" httpOnlyCookies="true" />
<httpCookies xdt:Transform="SetAttributes(requireSSL)" requireSSL="true" />
<anonymousIdentification xdt:Transform="SetAttributes(cookieRequireSSL)" cookieRequireSSL="true" />
<roleManager xdt:Transform="SetAttributes(cookieRequireSSL)" cookieRequireSSL="true" />
<authentication>
<forms xdt:Transform="SetAttributes(requireSSL)" requireSSL="true" />
</authentication>
</system.web>
</configuration>
Фон на web.config перетворюється тут: http://go.microsoft.com/fwlink/?LinkId=125889
Очевидно, що це виходить за рамки оригінального питання щодо ОП, але якщо ви не встановите їх на безпеку, ви можете розраховувати, що інструмент сканування безпеки помітить, і на звіті з’являться червоні прапори. Запитайте мене, як я знаю. :)
<httpCookies requireSSL="true" />