Moin!
Sicherheit erhälst du bei Logins nur durch Verschlüsselung, beispielsweise mit SSL. Alles andere ist Spielkram, macht das Verfahren komplizierter, fehleranfälliger, benutzerunfreundlicher, aber kein bißchen sicherer.
Diese Aussage ist nicht ganz richtig. Durch Verwendung einer Prüfsumme statt des Passwortes kann man durchaus mehr Sicherheit erreichen.
Man verschleiert das Passwort, man verhindert aber nicht die Angriffsmöglichkeit durch eigene Loginversuche.
Ein bekanntes Verfahren, das genau so arbeitet und das Du vermutlich auch kennst, ist HTTP Digest Access Authentification
Digest-Authentifizierung versucht, ein Sicherheitsgefühl zu geben, welches durch die unverschlüsselte Datenübertragung der zu sichernden Daten nicht aufrecht erhalten werden kann.
Wer mitlauschen kann, wird so zwar nicht das Passwort des angegriffenen Accounts mitkriegen, aber alle abgefragten Daten. Nicht sehr beruhigend.
Und wer nicht mitlauschen kann, aber Username und Passwort rauskriegt, dem ist Digest oder SSL natürlich auch egal.
Deshalb: Entweder sind die Daten, die zu schützen sind, so wichtig, dass sie nur mit SSL rausgehen dürfen. Dann soll man SSL auch einsetzen, nichts anderes. Oder die Daten sind weniger wichtig und können ruhig abgehört werden. Dann muß man aber nicht versuchen, den Standard-Sessionmechanismus (von PHP) noch irgendwie zu "verbessern" - das bringt dann auch nichts mehr, ein Stehlen oder Erraten einer bestehenden Session ist extrem unwahrscheinlich.
Es ist natürlich klar, dass ein solches Verfahren einen Dienst nicht vor "Man in the middle"-Angriffen schützt, aber sie sind dennoch eine Verbesserung.
Der OP sprach von einer "Verbesserung" bei den Session-IDs, nicht von einer Verschleierung der Login-Daten.
Und ich halte beide Ansätze für mehr Sicherheit für nicht zielführend.
- Sven Rautenberg
"Love your nation - respect the others."