Tach!
- Nach erfolgreichem Login, speichere die Name und Passwort des Nutzers in seinen Cookies? Oder nehm ich hier einfach einen Hashwert?
Du nimmst sowas nicht, wenn sich damit der Client durch Änderung der Daten als jemand anderes authentifizieren oder autorisieren kann. Üblicherweise nimmt man einen schwer erratbaren Zufallswert als Session-ID und ordnet dieser serverseitig die Daten zu, die requestübergreifend aufbewahrt werden sollen, inklusive Identifikationsinformationen. Und am besten nimmt man sich dafür ein vorhandenes System, damit man sich um seine Anwendung kümmern kann und nicht als Nebenkriegsschauplatz (gibts dafür ein pazifistisches Synonym?) mit Dingen wie dem Aufräumen nicht mehr benötigter Session-Daten beschäftigen muss.
- Ich frage jedesmal, wenn eine Seite besucht wird, ob ein passender Hashwert in den Coocies gesetzt wurde?
Ja, oder du schreibst zum Beispiel bei PHP nur session_start(), und das kümmert sich um das Session-Handling, egal ob neue Session oder wiederaufgenommene. Der Rest der Anwendung greift lesend oder schreibend auf das beliebig gestaltbare Array $_SESSION zu und erledigt ist der Fall.
- Angenommen ich speichere den HashWert nicht in den Cookies, sondern clientseitig im JavaScript, wäre dass dann nicht sicherer?
Der Speicherort beim Client ist nicht entscheidend. Alles kann manipuliert werden. Es gibt lediglich ein paar kleinere Einstellmöglichkeiten, die die großen Browser dazu veranlassen, die Daten nicht ganz so einfach rauszurücken. Zum Beispiel, dass ein Cookie nicht mit Javascript auslesbar ist.
Man nimmt Cookies dafür, weil das die einfachste Methode clientseitig ist. Man muss dazu nichts weiter tun. Der Browser kümmert sich selbständig um das Mitsenden bei allen Requests. Wenn du hingegen Daten irgendwo im Javascript ablegst, brauchst du irgendeine Routine in Javascript, die die Daten mitgibt. Das geht dann auch nur für über Javascript erzeugte Requests.
Verlässt ein Besucher meine Webseite, so muss er sich beim nächsten Besuch automatisch anmelden, wär dass nicht der einzige "Nachteil"?
Es kommt darauf an. Man kann bei Cookies eine Verfallszeit festlegen. Nach Ablauf dieser Zeit verwirft der Client den Cookie. Oder es ist ein Cookie ohne Zeit, dann wird es mit Schließen des Browsers verworfen.
dedlfix.