Sven Rautenberg: Password() Funktion in MySQL

Beitrag lesen

Moin!

Würde ich normalerweise auch machen. Ich hab eigentlich nur kurz
was reingeschrieben damit ihr wisst wie ich das password() anwende.

Ja, aber Copy&Paste ist bei sowas nie verkehrt. Denn wenn sich der Fehler in irgendeinem dummen Tippfehler versteckt, den du nicht siehst - wäre doch toll, wenn der gefunden würde.

Die Spalte mit dem Passwort heißt nicht password, sondern pwd. Jedenfalls, wenn deine Angabe oben stimmt.

Auch das ist mir klar! War eigentlich auch nur ein tippfehler.
Sorry. Mir ging es auch hier nur wieder ums prinzip der Anwendung.

Das Prinzip ist korrekt angewandt.

Es kommt kein MySQL Fehler zurück sondern einfach nur 0 rows.

Das deutet darauf hin, dass du keinen gültigen Datensatz findest. :) Haha, nicht gedacht, was? ;)

Ansonsten: Die Funktion password() von MySQL sollte man nicht selbst verwenden, sie ist für interne Zwecke vorgesehen. Mach lieber deine eigene Funktion auf. MD5 ist beispielsweise eine schöne Funktion, die du mit PHP ausführen kannst und die genau dasselbe leistet, wenn nicht sogar besseres.

Weisst du was MD5 ist? MD5 ist ein Prüfsummenberechnungsalgo!

Ich weiß sehr genau, was MD5 ist. Es ist ein irreversibler Hash-Algorithmus, welcher in der Tat für die Einmalverschlüsselung von Passwörtern angewandt wird. Er setzt einen beliebig langen Eingabestring in eine 128-Bit-Zahl um (welche oftmals als 32 Zeichen lange Hexzahl ausgegeben wird) und ist damit wesentlich besser als beispielsweise crypt(), welches nur 8 Zeichen des Passwortes beachtet und von schnellen Computern in annehmbarer Zeit per Brute Force überwindbar ist.

Damit kann man von einer Datei oder von irgendeinem String
eine Prüfsumme berechnen um beispielsweise die konsistenz von
Daten zu prüfen.

Das ist eine weitere Anwendungsmöglichkeit.

Grundsätzlich kann es vorkommen dass zwei verschiedene strings
die selbe prüfsumme zurückgeben. Deswegen würde ich sowas nicht
unbedingt für passwörter benutzen... Oder sehe ich das vielleicht
aus einem falschen Blickwinkel?

Das ist bei der password()-Funktion von MySQL mit Sicherheit auch der Fall.

Nur könnte es dir bei password() vielleicht passieren, dass diese Funktion intern mal anders gestrickt wird. Beispiel: Wenn sie intern bislang crypt verwendet hätte, wäre ein Update auf MD5 nicht schlecht. Nur ist das für dich schlecht, weil du dann deine Passwortdaten nicht mehr auf die neue DB-Version übertragen kannst. Denn zum Eintragen benötigst du entweder die Klartextvariante, die mit password() bearbeitet wird, oder das Ergebnis der crypt-Passwortvariante, die mit md5 nicht kompatibel ist.

Und schon hast du ein Problem.

Deshalb: Passwörter außerhalb der Datenbank verschlüsseln und dann speichern. Bringt außerdem noch leicht mehr Sicherheit, weil das Passwort nicht im Klartext zur Datenbank geht.

- Sven Rautenberg

--
"Beim Stuff für's Web gibts kein Material, was sonst das Zeugs ist, aus dem die Sachen sind."
(fastix®, 13. Oktober 2003, 02:26 Uhr -> </archiv/2003/10/60137/#m338340>)