suit: Neuer Artikel (Baustelle): Loginsystem und Benutzerregistrierung

Beitrag lesen

Ich habe in https://forum.selfhtml.org/?t=215336&m=1474577 versucht zu argumentieren, warum das letztlich eine schlechte Idee ist. Warum fangen wir nicht mal damit an, Anfängern zu beschreiben, wie wir es in der Praxis machen würden.

Das ist ein ganz anderer Ansatz als hier bisher verfolgt wird - die Idee gefällt mir ansich sehr gut, aber ist das didaktisch so sinnvoll, wenn man dem Leser einfach einen fertigen Brocke hinwirft den er ohne selbst zu denken kopieren kann - das widerspricht doch dem SELF gedanken.

Zum Beispiel finde ich PDO und Prepared Statements nicht komplexer als objektorientiertes mysqli mit sprintf-/real_escape_string-Orgien.

Da stimme ich dir zu.

Man muss Low-Level-Operationen wie sprintf und real_escape_string nicht kennen und kann Escaping nicht vergessen.

Wenn man drauf nicht vergessen kann, besteht aber die Gefahr, dass man sich garnicht mit der Thematik auseinandersetzen muss.

Don’t make me think! Bei HTML, CSS und JavaScript predigen wir Progressive Enhancement, warum nicht auch bei PHP. Best Practice wäre, direkt password_hash und password_verify zu nutzen und ggf. password_compat einzubinden.

Wie schon anderorts erwähnt habe ich mir das bereits überlegt - password_hash() und password_verify() sind allerdings nur in der PHP 5.5

Der kryptografische Hintergrund ist für den Anwender ohnehin unverständlich. Es reicht zu sagen: Dies ist der vorgesehene, sichere Weg und für ältere PHP-Versionen bauen wir die Funktion so gut es geht nach.

Es war mir hier wichtig dem Leser zu vermitteln, was in etwa zu tun ist um ein Passwort abzusichern - überall wird zwar davon gesprochen, aber der Weg - sprich was passiert und was diese unverständliche Zeichenkette tut bedarf Erklärung.

Eben wie ich z.B. Grundlegend erkenne, wie meine Passwörter abgelegt sind. Auf den ersten Blick sehen ja alle mit crypt verarbeiteten Passwörter irgendwie gleich aus, aber MD5 mit crypt ist genauso unsicher wie MD5 ohne crypt, nur dass es durch das vorangestellte $1$ irgendwie fancy aussieht.

Die Nachricht sollte sein: Nutze gehashte, gesalzene Passwörter, mach es nicht selbst, sondern verwende Standard-PHP-Tools und vorgegebene sichere Algorithmen.

Wie oben erwähnt ist hier imho erforderlich, dass man zumindest grundlegend erklärt was gehasht/gesalzen usw. bedeutet.

Generell sollten wir Artikel für die Zukunft schreiben, die die heutigen Best Practices dokumentieren und eine gewisse Halbwertszeit haben. Fallbacks für alte PHP-Versionen kann man einbauen. Sie sind aber nur für die technische Funktionsfähigkeit nötig.

Da bin ich voll bei dir.

Die darin verwendeten Techniken braucht der Anwender nicht zu verstehen geschweige denn sich zu merken.

Spiesst sich das nicht mit dem Motto "Die Energie des Verstehens"? :)