Authentifikation sessionid vs cookie

8

Ich versuche herauszufinden, die Vor- und Nachteile der Verwendung von SessionID-basierte Authentifizierung vs Cookie-basierte Authentifizierung

Soweit ich in der Cookie-basierten Authentifizierung sehen kann

  • Der Benutzer sendet eine Anmeldeanforderung mit den Zugangsdaten
  • Die Anmeldeinformationen werden anhand einer Datenbank überprüft
  • Cookie wird mit den Benutzerdetails
  • festgelegt
  • Dies wird über https gemacht und die Cookies werden verschlüsselt.
  • In .net, falls dies der Fall ist, wird die Benutzeridentität des Authcookie eingestellt
  • Die db wird nur einmal getroffen und nachfolgende Anrufe überprüfen nur den auth cookie

Bei sitzungsbasierter Authentifizierung

  • Der Benutzer sendet eine Anmeldeanforderung mit den Zugangsdaten
  • Die Anmeldeinformationen werden anhand einer Datenbank überprüft
  • Eine Session-ID wird generiert und ebenfalls in einer db
  • gespeichert
  • Cookie wird mit den Benutzerdetails und einer generierten Sitzungs-ID
  • festgelegt
  • Nachfolgende Aufrufe vergleichen die Sitzungs-ID mit der in der Datenbank
  • Die db wird jedes Mal getroffen

Fragen

Gibt es irgendeinen Grund, einen vor dem anderen zu bevorzugen? Ist das Cookie weniger sicher (selbst wenn Sie es verschlüsseln und signieren)? Ist die Leistung der Sitzung schlechter, da sie bei jedem Anruf auf die Datenbank trifft? Ich habe mehrere Seiten gesehen, die sich in die eine oder andere Richtung lehnten, aber ich konnte mir kein klares Bild davon machen, welchen Ansatz ich verwenden sollte. Alle Diskussionen / Vorschläge würden sehr geschätzt werden.

    
user275157 23.06.2011, 12:41
quelle

1 Antwort

7

Es fällt mir schwer, diese Frage zu verdauen. Nach meinem Wissen gibt es die formularbasierte Authentifizierung in zwei Varianten: Cookies und ohne Cookies. Cookie-basierte Authentifizierung ist bevorzugt.

In der cookie-basierten Version erhält der Benutzer eine Cookie, deren Wert ein verschlüsseltes Forms Authentication Ticket ist. Der Cookie ist auf dem Server verschlüsselt. Sofern der Verschlüsselungsschlüssel nicht von machine.config freigegeben oder in Web.config überschrieben wird, kann der Cookie nur von dem Server entschlüsselt werden, der ihn ausgegeben hat. Ich glaube, dass die Verschlüsselung AES ist, die sehr sicher ist.

Beim cookielosen Ansatz wird die Nutzlast des Cookies mithilfe eines HTTP-Moduls in die URL eingefügt. Dieser Ansatz wird nur verwendet, wenn das Gerät keine Cookies unterstützt (selten). Der cookielose Ansatz wird nicht bevorzugt - er macht AJAX schwieriger.

Siehe:

Ссылка

und

Ссылка

    
Brett 23.06.2011, 17:58
quelle