Hallo Robert,
danke erstmal. Ja, Option 3 und 4 sind vom Tisch. Ich habe die erste Variante benutzt, hatte aber auch überlegt, ob auch die anderen sinnvoll oder sinnvoller wären. Inzwischen kam jedoch heraus, dass man den Benutzer ja noch mit Mindestzeichenkettenlängen und Zeichenkomplexität ärgern kann. Also ist die Variante 1+ wohl die bisher sinnvollste.
Zum einen möchte ich den Code möglichst übersichtlich gestalten, damit auch Außenstehende leicht nachvollziehen können, was ich da angestellt habe. Andererseits traue ich den Benutzereingaben nicht und möchte möglichst alle Fehlerquellen ausschließen.
Daher prüfe ich zum Beispiel auch zusätzlich, ob es sich überhaupt um einen POST-Request handelt und ob ein gültiger CSRF-Token vom Formular mitgegeben wurde, ehe die Formular-Verarbeitung startet.
Du solltest allerdings die Passwörter nicht nur Hashen, sondern auch Salzen.
Daran hab ich auch noch nicht gedacht. Guter Hinweis.
Beste Grüße
vapita