Jak ustawić flagę Secure w pliku cookie sesji ASP.NET, aby był przesyłany tylko przez HTTPS, a nigdy przez zwykły HTTP?
146
Jak ustawić flagę Secure w pliku cookie sesji ASP.NET, aby był przesyłany tylko przez HTTPS, a nigdy przez zwykły HTTP?
Istnieją dwa sposoby, jeden httpCookies
element web.config
pozwala na włączenie, requireSSL
który przesyła tylko wszystkie pliki cookie, w tym tylko sesję SSL, a także uwierzytelnianie wewnątrz formularzy, ale jeśli włączysz SSL na httpcookies, musisz również włączyć go w konfiguracji formularzy.
Edytuj dla jasności:
umieść to<system.web>
<httpCookies requireSSL="true" />
<httpCookies requireSSL="true" />
W
<system.web>
elemencie dodaj następujący element:Jeśli jednak masz
<forms>
element w swoimsystem.web\authentication
bloku, spowoduje to nadpisanie ustawienia w programiehttpCookies
, przywracając go do wartości domyślnejfalse
.W takim przypadku musisz dodać
requireSSL="true"
atrybut również do elementu formularzy.Więc skończysz z:
Zobacz tutaj i tutaj, aby uzyskać dokumentację MSDN dotyczącą tych elementów.
źródło
roleManager
element, jego atrybutcookieRequireSSL="true"
również powinien być ustawiony na true. Nr ref. msdn.microsoft.com/en-us/library/…Sprawy szybko się komplikują, jeśli mówisz o kodzie zaewidencjonowanym w środowisku przedsiębiorstwa. Odkryliśmy, że najlepszym rozwiązaniem jest umieszczenie w pliku web.Release.config następujących elementów:
W ten sposób nie dotyczy to programistów (działa w trybie debugowania), a tylko serwery, które otrzymują kompilacje wydania, wymagają, aby pliki cookie obsługiwały protokół SSL.
źródło
bezpieczny - ten atrybut informuje przeglądarkę, aby wysyłała plik cookie tylko wtedy, gdy żądanie jest wysyłane przez bezpieczny kanał, taki jak HTTPS. Pomoże to chronić plik cookie przed przesyłaniem niezaszyfrowanych żądań. Jeśli dostęp do aplikacji można uzyskać zarówno za pośrednictwem protokołu HTTP, jak i HTTPS, istnieje możliwość, że plik cookie może zostać przesłany w postaci zwykłego tekstu.
źródło
Opierając się na odpowiedzi @Mark D, użyłbym transformacji web.config, aby ustawić wszystkie różne pliki cookie na bezpieczne. Obejmuje to ustawienie
anonymousIdentification cookieRequireSSL
ihttpCookies requireSSL
.W tym celu skonfigurowałbyś swój web.Release.config jako:
Jeśli używasz ról i form uwierzytelniania z
ASP.NET Membership Provider
(wiem, że to starożytne) Warto również ustawićroleManager cookieRequireSSL
i teforms requireSSL
atrybuty jako zbyt bezpieczne. Jeśli tak, Twój plik web.release.config może wyglądać następująco (dołączony powyżej oraz nowe tagi dla interfejsu API członkostwa):Tło na web.config zmienia się tutaj: http://go.microsoft.com/fwlink/?LinkId=125889
Oczywiście wykracza to poza pierwotne pytanie dotyczące PO, ale jeśli nie ustawisz ich wszystkich jako zabezpieczających, możesz spodziewać się, że narzędzie do skanowania bezpieczeństwa zauważy, a w raporcie pojawią się czerwone flagi. Zapytaj mnie, skąd wiem. :)
źródło