2012-04-12 6 views
3

ich so etwas wie dies in der web.config verwenden AngenommenNachteile, die mit Verwendung von Formularauthentifizierung „slidingExpiration“

<authentication mode="Forms"> 
<forms 

     loginUrl ="~/HomeLogin.aspx" 
     cookieless= "AutoDetect" 
     slidingExpiration="true" 
     timeout="10" 
     protection ="All" 

/> 
</authentication> 

Wenn slidingExpiration auf true gesetzt ist (Standardeinstellung), jedes Mal wenn die FormsAuthenticationModule einen Benutzer authentifiziert, es aktualisiert den Ablauf des Tickets Wenn dieser Wert auf "false" gesetzt ist, wird der Ablauf bei jeder Anfrage nicht aktualisiert, wodurch das Ticket genau nach Ablauf der letzten Minuten abläuft, als das Ticket erstellt wurde.

Hinweis: Der Ablauf in dem Authentifizierungs-Ticket gespeichert ist ein absolutes Datum und Zeitwert, wie 2. August 2008 11.34. Darüber hinaus beziehen sich Datum und Uhrzeit auf die lokale Zeit des Webservers. Diese Designentscheidung kann einige interessante Nebeneffekte im Zusammenhang mit der Sommerzeit (Daylight Saving Time, DST) haben, bei der die Uhren in den Vereinigten Staaten eine Stunde vorverlegt werden (vorausgesetzt, der Webserver befindet sich in einem Gebietsschema, in dem die Sommerzeit eingehalten wird). Berücksichtigen Sie, was für eine ASP.NET-Website mit einem 30-minütigen Ablaufdatum in der Nähe der Zeit, zu der die Sommerzeit beginnt (um 2:00 Uhr morgens), eintritt. Stellen Sie sich vor, ein Besucher meldet sich am 11. März 2008 um 1:55 Uhr auf der Website an. Dies würde ein Ticket zur Formularauthentifizierung generieren, das am 11. März 2008 um 2:25 Uhr (30 Minuten in der Zukunft) abläuft. Sobald jedoch um 2:00 Uhr herumgerollt wird, springt die Uhr aufgrund der Sommerzeit auf 3:00 Uhr. Wenn der Benutzer sechs Minuten nach der Anmeldung (um 03:01 Uhr) eine neue Seite lädt, stellt das FormsAuthenticationModule fest, dass das Ticket abgelaufen ist, und leitet den Benutzer auf die Anmeldeseite um.

Dies ist ein Fall, in dem es Probleme verursachen könnte. Jemand kann auf solche Nachteile hinweisen. Ich bin daran interessiert, es zu wissen.

Dank

+0

Fragen Sie nach Nachteilen für 'slidingExpiration =" true "' oder Nachteile für den Rückwärtsgang? – Abel

+0

@Abel wenn es wahr ist – freebird

Antwort

5

FormsAuthentication verwendet für die Berechnung der UTC-Zeit. Sie müssten zum Quellcode (oder Reflector) gehen, um dies zu sehen, alle Eigenschaften/Methoden, die mit UTC-Daten arbeiten, sind intern.

Cookies verwenden UTC-Zeit für das Ablaufdatum gemäß RFC 6265, section 5.1.1.

„Lassen Sie das analysierte-Cookie-date das Datum Tag-of-Monat sein, das, Monat, Jahr, Stunde, Minute und Sekunde (in UTC) ist der Tag-of-Monat- Wert, der Monatswert, der Jahrwert, der Stundenwert, der Minutenwert und der zweite Wert. "

Dies bedeutet, dass DST kein Problem sein wird.

Der gleitende Ablauf erlaubt eine Anmeldung für unbestimmte Zeit, solange der Benutzer aktiv ist. Dies bedeutet, dass eine dritte Partei den Cookie auf dem Weg greifen und sich als der Benutzer für eine ebenso unbestimmte Zeit authentifizieren kann.

Ein absoluter Ablauf würde dies nicht stoppen, aber würde eine erneute Authentifizierung in regelmäßigen Abständen erfordern, wodurch das Zeitfenster begrenzt wird, in dem die dritte Partei den Cookie verwenden kann.

+1

+1 für die Cookie-Hijack, nice point. – Abel

0

Formular-Authentifizierung immer in UTC.

Verwandte Themen