Hallo!
Schrott (aber das haben Dir andere ja schon gesagt)
Okay ich werds ändern.^^
- NUR md5 ist sicher genug. Wenn Du aber unbedingt SHA1 willst, kannst Du es gerne benutzen, die beiden MD5-Aufrufe fressen aber nur unnötigerweise Rechenzeit.
- MD5 als auch SHA1 sind keine Verschlüsselungsalgorithmen.
Okay da sha1 40 Bit Hash und md5 einen 32 Bit Hash erzeugt ist es doch okay wenn ich das Passwort mit sha1(PW.Salt) kodiere.
Als beliebiger Benutzer Deinen Webservice nutzen und dabei beliebige Mengen Schaden anrichten.
-< Verdammt!
Nach dem Senden von Benutzername + Passwort wird "Benutzername-MD5(Benutzername+Passwort+Magic)" in Form eines Session-Cookies an den Benutzer zurückgesendet.
Ich nehme an das "Magic" ein Salt sein soll. Und das ich einfach Eine Session starte mit der Sesseion Variable z.b. $_SESSION['geheim'] = Benutzername-MD5(Benutzername+Passwort+Magic)
Bei jedem Request wird geprüft, ob der Session-Cookie vorhanden ist. Wenn ja, wird der Benutzername isoliert, in der Datenbank das Passwort abgerufen und dann wieder "Benutzername-MD5(Benutzername+Passwort+Magic)" berechnet.
Jetzt versteh ich das ganze nicht mehr.
Stimmt das mit dem vom Benutzer übergebenen Wert überein, ist er eingeloggt, sonst nicht. Ob man den Magic global für alle Benutzer konstant setzt, oder ob man diesen Wert pro Benutzer beim Login zufällig generiert, bleibt sich erstmal relativ gleich. Das Argument Plaintext-passwort-equivalent zählt auch nicht, da auch das Übertragen des Passwortes beim Login unverschlüsselt passiert.
??
Soll das Passwort SHA1-Codiert in der Datenbank gespeichert sein, so muß natürlich auch die SHA1-Codierte Version in den Session-Cookie eingerechnet werden.
OKay das ist logisch.
Wenn du es jetzt noch ganz sauber machen möchtest, baust Du noch eine Codierungsstufe auf JavaScript-Basis ein:
Im Login-Formular kommt noch ein type=hidden, name=challeng, value=zufall rein, der submit-button bekommt noch ein onclick verpasst. Dort steht eine Funktion, die das Passwort zusammen mit dem Challenge md5summiert, und das Ergebnis dieser md5sum-Berechnung statt des Klartextpasswortes als Passwort übermittelt (zusammen mit dem Challenge, das Du natürlich vorher in der Datenbank gespeichert hattest). Auf diese Weise wird das Passwort nicht mehr im Klartext übertragen.
Auch das stößt ein wenig ans Ende meiner Vorstellungskraft.
Ich denke, so funktioniert das, werde das demnächst mal selber zusammen programmieren.
Muss man dir das dann abkaufen, kriegt man es kostenlos, garnicht oder hilfst du mir jetzt hier weiter, was sehr sehr toll wäre =) .
MfG
Phil Z.