Tom: max. Sicherheit beim Arbeiten von Login mit Sessions (PHP)

Beitrag lesen

Hello,

MD5 ist unsicher. Schau Dir mal die SHA-2-Hashes an. Ansonsten suche nach dem Stichwort "Salt" im Archiv.

MD5 ist hier nicht unsicherer, als die Sicherheit der Datenbank dies ermöglicht. Ob der Datenbankadministrator das MD5-gewandelte Passwort mittels Rainbowtables ermitteln kann, ist so ziemlich egal, denn er könnte ohnehin jede Manipulation an den Daten durchführen.

Bei der ganzen Frage muss man wohl erstmal unterscheiden zwischen sicheren und nrmalen (unsicheren) Netzen. In normalen Netzen ist die Übermittlung eines Schlüssels, bzw. die gemeinsame Übermittlung von zwei Schlüsselteilen immer unsicher. Eine [Session-ID] ist also genauso unsicher, wie ein [Username + (gutes) Passwort].

Hier spielt die Erratbarkeit wohl eher eine untergeordnete Rolle. Die Abfischbarkeit stellt die größere Gefahr dar.

Bei jedem weiteren Aufruf einer Seite wird nun erneut Benutzername und Passwort überprüft.

Nein! Dazu müsste der Nutzer jedes Mal wieder die Daten senden. Das will er nicht und soll er nicht! Er identifiziert sich nur(!) durch Senden der Session-ID.

Da stimme ich Dir zu, siehe Vorstehendes.

Allerdings sollte bei jedem Request die Gültigkeit des Accounts überprüft werden und es sollten die aktuellen Rechte geladen werden, wenn man diese nicht sogar bei Abarbeitung des Requests für jede benutzte Funktion einzeln prüft.

Das wäre dann die Abstufung

  • Sessionbezogene Legitimation
  • Requestbezogene Legitimation
  • Funktionsbezogene Legitimation

Um die Sessionsicherheit zu erhöhen, kann man mit jedem Request eine neue Session-ID zuweisen
z.B. bei PHP: http://de3.php.net/manual/en/function.session-regenerate-id.php

Um die Sicherheit in realen Netzen herzustellen, ist eine Point-to-Point-Verschlüsslung, z.B. mit SSL/TSL notwendig.

Liebe Grüße aus dem schönen Oberharz

Tom vom Berg

--
 ☻_
/▌
/ \ Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de