2009-09-18 13 views

Odpowiedz

82

Istnieją dwa sposoby, jeden httpCookies elementem web.config pozwala włączyć requireSSL który tylko przekazuje wszystkie ciasteczka w tym sesji SSL tylko i również wewnątrz uwierzytelnianie formularzy, ale jeśli włączyć SSL na httpcookies należy również włączyć również w konfiguracji formularzy.

Edycja dla jasności: umieścić to w <system.web>

<httpCookies requireSSL="true" /> 
+1

+1 To działało. Dzięki! – Alex

+11

+1 Aby wyjaśnić, jest to, co powinieneś dodać do pliku web.config, aby ustawić bezpieczną flagę pliku cookie auth na true '' – Tr1stan

+6

Pamiętaj, że to zależy od twojego (serwer-poziom) konfiguracja. Zmniejszyłem region testowy z błędem "Aplikacja jest skonfigurowana do wysyłania bezpiecznych plików cookie. Te pliki cookie wymagają, aby przeglądarka wysłała żądanie przez SSL (protokół https), ale bieżące żądanie nie jest przez SSL." Dzieje się tak dlatego, że mamy odwrotny serwer proxy, a przeglądarki łączą się z nim za pośrednictwem protokołu SSL, ale odwrotne proxy do serwera IIS ma port 80, więc aplikacja nie uznała, że ​​jest zabezpieczony. – mlhDev

130

W elemencie <system.web> dodaj następujący element:

<httpCookies requireSSL="true" /> 

Jednakże, jeśli masz <forms> element Twój blok system.web\authentication, to zastąpi ustawienie w httpCookies, przywracając domyślną wartość false. W takim przypadku należy dodać atrybut requireSSL="true" również do elementu formularzy.

więc skończy się z:

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

Zobacz here i here dokumentacji MSDN tych elementów.

+2

Drobna edycja (potrzebujesz węzła auth w tym systemie btw.internetowych i formy):

+1

Można uniknąć innych ustawień web.config nadrzędnego katalogu ustawienie, włączając atrybut "lockItem". Tak jak poniżej: . Więcej informacji tutaj http://www.dotnetnoob.com/2010/11/how-to-secure-aspnet-cookies.html – JTech

+0

Dodatkowo, jeśli istnieje element 'roleManager', jego atrybut' cookieRequireSSL = "true" 'powinien również ustaw na true. Ref. https://msdn.microsoft.com/en-us/library/system.web.security.roles.cookierequiressl(v=vs.110).aspx –

12

Rzeczy stają się niechlujne szybko, jeśli mówimy o kodzie odprawionym w środowisku przedsiębiorstwa. Odkryliśmy, że najlepszym rozwiązaniem jest mieć web.Release.config zawierać następujące elementy:

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

ten sposób, twórcy nie mają wpływu (uruchomiony w Debug), a tylko serwery, które się buduje Release wymagają plików cookie jako SSL.

Powiązane problemy