dedlfix: Ist mein Login System sicher genug

Beitrag lesen

echo $begrüßung;

  • Abfangen von Userdaten

Durch wen und wobei?

Leute die unbefugten Zugriff haben wollen auf die Datei online.php.

Ah, das meinst du. Das wäre ja nur ein Verhindern unautorisierter Eindringversuche. Unter Abfangen verstehe ich ein Auflauern auf dem Weg (Man-in-the-Middle). Das ließe sich durch eine gesicherte Übertragung verhindern/erschweren.

  • Fälschung der Session (verdammt wichtig)
      das sich kein Fremder einloggen kann der nicht angemeldet ist.

Im Allgmeinen sind Cookies besser gegen Weitergabe geschützt als eine URL mit angehängter Session-ID, aber manche User schalten die Keks aus, teilweise auch aus Unkenntnis über ihr Wesen.

Genau darum gehts mir ich möchte das die SID per URL weitergegeben und das so sicher wie möglich. Wie mache ich das am besten?

Wenn die Session-ID in die URL steht ist sie schnell mal beabsichtigt oder unbeabsichtigt weitergegeben. Szenarien:

  • "Schau mal, was für ein tolles Hastenichtgesehen ich grad gefunden habe. Ich geb dir mal den Link."
  • Der Anwender klickt einen Link zu einem externen Angebot und der Browser gibt die URL samt Session-ID als Referrer mit.
  • Einem Angreifer gelingt es, per XSS oder ähnlichem einen Link in deine Seite einzubauen ... weiter siehe eins drüber.

Am besten ist, wie gesagt, immer noch ein Cookie. Mir fällt derzeit nur XSS ein, um Cookies unautorisiert auslesen zu können.

Man kann verhindern, dass mehrfache Versuche uneingeschränkt gelingen, das sollte man aber wohlüberlegt angehen, da man sonst auch unschuldige Anwender aussperren kann.

Ich denke 6 versuche sind fair oder? Wie realisiere ich das am besten?

Eine Möglichkeit wäre, die IP zu überprüfen und bei mehrfachen Login-Versuchen mit der selben IP diese abzublocken. Doch die IP ist ein recht unsicheres Identifikationsmerkmal, um nicht zu sagen: eigentlich gar keins. Mehrere Nutzer können sich eine IP teilen (Proxy, NAT), ein Nutzer kann mehrere IPs haben (Proxy-Farm) und Angreifer können über mehrere IPs verfügen (Bot-Netz).

Wenn es wirklich notwendig ist, Mehrfach-Loginversuche abzublocken, würde ich nur die Kennung für einen angemessenen Zeitraum sperren. Vielleicht auch gestaffelt, beispielsweise erst 15 Minuten, beim den nächsten Versuchen 1 Stunde usw. Vielleicht auch bei falscher Eingabe das Script einfach 5 Sekunden schlafen lassen. Das frisst außer der bestehenden Verbindung weiter kein Brot.
Bei längerer Sperrzeit sollte das einhergehen mit einer Beschreibung der Sachlage für den Anwender, möglichst mit Lösungsvorschlägen. Z.B.: (nicht übermäßig viel Fachchinesisch verwenden)
"Kennung derzeit/noch x Minuten gesperrt. Mögliche Gründe:

  • Sie hab zu oft ein falsches Passwort eingegeben.
  • Jemand versucht ihren Anmeldenamen zu missbrauchen.
  • ...
    Sollte dies öfter passieren, nehmen Sie bitte Kontakt zu uns auf, damit wir gemeinsam eine Lösung finden können. ..."
    Ein möglicher Ausweg, den man dann dem Anwender vorschlagen kann, wäre ein Wechsel des Anmeldenamens.

echo "$verabschiedung $name";