f34rless: Login Script - Was ist wichtig

Hallo liebe Selfhtml`er

:)

Ich möchte gern ein Login Script mit php programmieren. Da dies mein erstes werden wird möchte ich natürlich so wenig wie möglich Fehler machen.
Daher meine Frage.

Auf was sollte ich zwingend achten?
Wie sollte der Aufbau gestaltet sein?
Mit oder ohne Cookies?
https:// ?
Welche Sicherheitsfunktionen sollte dies beinhalten?
Eventuell Lektüre über das programmieren von Login Scripten in php?

Wäre über Tips sehr sehr dankbar.

LG f34rless

  1. Hallo,

    Wäre über Tips sehr sehr dankbar.

    also ich würde mir einfach ein par Beispiele im Netz angucken. Mit
    https:// hab ich noch nie ein Login-Script geschrieben. Du solltest
    dir auch gut überlegen für was das Login-Script ist und wie sicher es
    sein soll.
    Also ich hab bei Login-Scripts immer mit SESSIONs gearbeitet, weil
    das, so finde ich, einfacher ist, als der Umgang mit Cookies.
    Wenn ich mich recht erinnere gibt es auf http://www.designnation.de
    unter den PHP-Tutorials auch Beispiele für ein Login-Script. Kannst
    da ja einfach mal schauen.

  2. Hallo f34rless,

    Loginscripte funktionieren im Prinzip folgendermassen:

    • Username und Password werden gepostet
    • Du machst eine Abfrage auf deiner Usertable, ob es einen User und mit einem Password gibt, die den geposteten Daten entsprechen
    • Wenn das nicht so ist, zeigst du wieder die Loginform an mit einer entsprechenden Fehlermeldung
    • Andernfalls schreibst du z.B. den Usernamen in die Session
    • Auf allen nachfolgenden Seiten ueberpruefst du die Session, ob sie den Usernamen enthaelt.

    Es gibt dabei aber einige Dinge zu beachten:

    • bevor du die Abfrage auf der Datenbank machst, solltest du, etwa mit einem regulaeren Ausdruck untersuchen, ob die Eingaben gewissen Kriterien entsprechen. Beispielsweise kannst du darauf achten, dass nur Buchstaben [a-zA-Z] und Zahlen [0-9], gueltige Eingaben sind. Zweck dieser Uebung ist es SQL-Injections zu verhindern. Du kannst auch andere Zeichen zulassen, vorstehendes soll nur als Beispiel dienen.
    • Die Fehlermeldung sollte nie lauten 'Falscher Benutzername' oder 'Falsches Passwort', sondern immer 'Falsches Password ODER falscher Benutzername', um keine Hinweise darauf zu geben, welcher Teil des Logins bereits korrekt erraten wurde. Zudem solltest aus dem gleichen Grund auch nicht Usernamen oder Password aus dem erfolglosen Login in das Formular zurueckschreiben.
    • Keinesfalls solltest du das Password in die Session schreiben.
    • Es ist auch sinnvoll, den REMOTE_HOST des Users mit in die Session zu uebernehmen und diesen auf jeder folgenden Seite wieder zu ueberpruefen. Auf diese Art kannst Du zumindest in einem gewissen Rahmen verhindern, dass eine entfuehrte Session verwendet wird.

    Gruß,

    Dieter

    1. Tag,

      • Es ist auch sinnvoll, den REMOTE_HOST des Users mit in die Session zu uebernehmen und diesen auf jeder folgenden Seite wieder zu ueberpruefen. Auf diese Art kannst Du zumindest in einem gewissen Rahmen verhindern, dass eine entfuehrte Session verwendet wird.

      Davon würde ich eher abraten, da sich z.B. bei der Benutzung AOL-Proxyservern der REMOTE_HOST wärend einer Session ändern kann.
      Hier ein Auszug aus meinen Logs.

      8<---
      2006/01/23 01:27:00 cache-dtc-ac05.proxy.aol.com
      2006/01/23 01:26:59 cache-dtc-aa04.proxy.aol.com
      2006/01/23 01:26:59 cache-dtc-ab06.proxy.aol.com
      2006/01/23 01:26:55 cache-dtc-ac02.proxy.aol.com
      2006/01/23 01:26:54 cache-dtc-ab07.proxy.aol.com
      2006/01/23 01:26:54 cache-dtc-aa04.proxy.aol.com
      2006/01/23 01:26:52 cache-dtc-ad05.proxy.aol.com
      2006/01/23 01:26:51 cache-dtc-aa04.proxy.aol.com
      8<---

      Aufgrund der zeitlichen Nähe der Request und der Referers kann man darauf schließen, daß die Request zu einer Session gehören, obwohl sich der REMOTE_HOST geändert hat.

      Grüße,
      Steffen.

      1. Hallo,

        Davon würde ich eher abraten, da sich z.B. bei der Benutzung AOL-Proxyservern der REMOTE_HOST wärend einer Session ändern kann.

        Dann können solche User eben nicht mitspielen :-))

        LG
        Chris