Відповіді:
Є два способи, один 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" />