Was sind einige Best Practices für die Cookie-basierte Webauthentifizierung?

11

Ich arbeite an einem kleinen Nebenprojekt mit CGI und Python (Skalierbarkeit ist kein Problem und es muss ein SEHR einfaches System sein.)

Ich dachte daran, die Authentifizierung mithilfe von Cookies zu implementieren, und fragte mich, ob es etablierte Best Practices gibt.

Wenn sich der Benutzer erfolgreich authentifiziert hat, möchte ich mithilfe von Cookies herausfinden, wer angemeldet ist. Was sollte nach den Best Practices in einem solchen Cookie gespeichert werden?

rdasxy
quelle

Antworten:

12

Bester Fall: Eine einzelne ID, die sich auf alle anderen benötigten Informationen bezieht, die wiederum in einer Datenbank gespeichert sind.

Es gibt Zeiten, in denen es sinnvoll ist, andere Informationen einzutragen, aber sie sind selten. Sie müssen sich immer fragen, warum, mindestens fünfmal .

SSL schützt Ihre Benutzer vor Sitzungsentführungen, speichert jedoch selbst dann niemals unverschlüsselte vertrauliche Informationen in einem Cookie. Es wird im Wesentlichen im Klartext auf der Festplatte gespeichert.

Schließlich und vor allem schützen Sie Ihren Benutzer vor XSS- und CSRF-Angriffen .

Der XSS-Schutz ist im Allgemeinen so einfach wie vorsichtig zu sein, wenn Sie Javascript von einschließen, da Javascript auf einem anderen Server ohne Ihr Wissen geändert werden kann und dieses Javascript Zugriff auf Cookie-Daten hat. Wenn Sie also das Content-Delivery-Netzwerk von Evil Corp verwenden, um Ihr jQuery-Skript bereitzustellen, können diese plötzlich Code hinzufügen, um ihnen die Cookies Ihrer Benutzer zu senden. Du würdest es nicht wissen; Ihre Benutzer würden es nicht wissen.

Laden Sie entweder Skripte herunter und stellen Sie sie von Ihrem eigenen Server bereit, oder verwenden Sie sehr vertrauenswürdige CDNs wie Google oder Yahoo.

Der CSRF-Schutz erfolgt normalerweise durch einen zufälligen Wert in einem ausgeblendeten Feld in einem Formular. Der Wert wird in der Sitzung beibehalten, sodass Sie beim erneuten Senden des Formulars überprüfen können, ob es vom selben Computer stammt.

Die meisten Web-Frameworks verfügen jetzt über sehr einfache Techniken zum Einfügen dieses Tokens.

pdr
quelle
3
  • Verwenden Sie die secureund httpOnly-Flaggen.
  • Codieren Sie die Sitzungscookie-Daten und signieren Sie die codierten Daten kryptografisch mit einem MAC. Überprüfen Sie jedes Mal die Signatur auf dem Server, bevor Sie sich die Mühe machen, die Sitzungscookie-Daten zu dekodieren. (Rails macht dies standardmäßig.)
Yfeldblum
quelle