2009-01-08 16 views

Odpowiedz

74

Plik cookie ASPXAUTH służy do określenia, czy użytkownik jest uwierzytelniony.

Co do lokalizacji pliku cookie, zależy to od przeglądarki. Jeśli używasz przeglądarki Firefox, możesz wyświetlić plik cookie, klikając Narzędzia -> Opcje -> Prywatność. Następnie przewiń w dół do domeny i rozwiń ją, aby zobaczyć plik cookie i jego wartość. Wartość jest szyfrowana za pomocą klucza komputera (znajdującego się w pliku machine.config lub web.config serwera), więc przeglądanie pliku cookie na kliencie nie dostarczy żadnych informacji. Można odszyfrować/zobaczyć wartość po stronie serwera przy użyciu:

HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName];//.ASPXAUTH 
FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value); 

gdzie authTicket ma następujące pola:

enter image description here

Stwierdzenie „ASPXAUTH jest w zasadzie wykorzystywane do utrzymania stanu sesji ASP.NET” jest nieprawidłowe. ASP.NET wydaje zupełnie inny plik cookie o nazwie ASP.NET_SessionId, aby śledzić stan sesji.

+2

Na Firefox v8.0 pliki cookie można znaleźć w następujący sposób: Narzędzia -> Informacje o stronie -> Bezpieczeństwo -> Wyświetl pliki cookie – Anthony

+0

Na tej samej karcie bezpieczeństwa znajduje się przycisk "Wyświetl zapisane hasła" i ku mojemu zdziwieniu mogłem zobaczyć wszystkie hasła jako zwykłe tekst na różne strony internetowe Przeglądałem używając firefox. Choć przeglądarka musi przechowywać go w zakodowanym formacie na dysku i pokazuje to tylko dla twojego odniesienia przez dekodowanie, ale ta opcja jest tak naprawdę zagrożeniem bezpieczeństwa, jak tylko mogę. Jeśli dowolny haker może zastosować ten sam algorytm i odczytać te pliki cookie przy użyciu javascript, chociaż wyciek tego algorytmu jest dalszą możliwością, ponieważ może on również obejmować jakiś klucz, który jest znany tylko dla kodu przeglądarki. – RBT

+0

Aby uzyskać nazwę klucza używanego do przechowywania identyfikatora sesji asp.net w zbiorze plików cookie żądania http, jest kod C#: var aspNetSessionState = new System.Web.Configuration.SessionStateSection(); var aspNetSessionCookieName = aspNetSessionState.CookieName; – RBT

6

W rzeczywistości plik cookie .ASPXAUTH nie podaje dokładnych informacji o prawdziwym uwierzytelnieniu użytkownika. Gdy użytkownik wylogowuje się z aplikacji, plik cookie .ASPXAUTH jest usuwany z przeglądarki. Jeśli jednak wrócić na miejsce w krótkim okresie czasu (z limitem czasu forma auth cookie) i edytować nowe ASP.NET_SessionId cookie z poniższym:

  • zmiana „name” z pola „ASP .NET_SessionId „na” .ASPXAUTH”
  • zmiana«wartości»z 24 char sessionid do starego 448 char uwierzytelniania ciąg

Po odświeżeniu będzie można przyjąć tożsamość uwierzytelnionego użytkownika bez technicznie ponownego poświadczenia jeszcze raz. (ponownie zakładając, że robisz to w określonym limicie czasu przechowywanym w zaszyfrowanym ciągu znaków .ASPXAUTH)

Dobry opis blog zawiera bardziej szczegółowy opis problemu. Możliwym rozwiązaniem jest połączenie .ASPXAUTH z sesją ASP.

0

Jeśli interakcje użytkownika z adresem URL logowania HTML pozwoliły TSWPPserver ustalić tożsamość użytkownika, serwer zdalny POWINIEN wygenerować plik cookie identyfikujący użytkownika i umożliwiający uwierzytelnienie na serwerze. Zawartość pliku cookie POWINNA być podpisana i zaszyfrowana. Konkretna implementacja tego pliku cookie, w tym algorytmów podpisywania i szyfrowania, zależy od implementacji serwera TSWPP, ponieważ do analizy zawartości pliku cookie wymagany jest tylko serwer. Jeśli serwer zaimplementuje plik cookie, wówczas MUSI zostać zwrócony plik cookie w ładunku HTTP z typem treści "application/x-msts-webfeed-login".

http://msdn.microsoft.com/en-us/library/ee920427.aspx