Unique Passwort erzeugen
am 07.06.2006 11:16:09 von Martin Schneider
Hallo!
Ich habe in einer MyISAM-Tabelle eine Spalte "Passwort". Diese würde ich
gerne mit einem Passwort füllen, das 8 Zeichen lang ist und eine
zufällige Kombination aus a-z A-z 0-9 enthält. Das Passwort soll dabei
unique sein.
Wie gehe ich hier am besten vor? Ich kann natürlich in meinem
Client-Programm ein Passwort erzeugen, es in die Tabelle schieben und
wenn ein Fehler kommt, dass das Passwort nicht unique ist, das Spiel von
vorne beginnen. Das erscheint mir aber nicht "besonders schön". Gibt es
da noch andere Möglichkeiten, die ich gerade übersehen?
Viele Grüße
Martin
Re: Unique Passwort erzeugen
am 07.06.2006 11:28:29 von Andreas Kretschmer
Andreas
--
Andreas Kretschmer
Linux - weil ich es mir wert bin!
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net
Deutsche PostgreSQL User Group: http://pgug.de
Re: Unique Passwort erzeugen
am 07.06.2006 11:45:21 von Martin Schneider
Hi Andreas, danke für die Antwort,
>>Ich habe in einer MyISAM-Tabelle eine Spalte "Passwort". Diese würde ich
>>gerne mit einem Passwort füllen, das 8 Zeichen lang ist und eine
>>zufällige Kombination aus a-z A-z 0-9 enthält. Das Passwort soll dabei
>>unique sein.
>
> erzeuge den md5-hash aus der aktuellen Zeit und schneide daraus 8
> Zeichen raus. Das sollte mit relativ hoher Sicherheit unique sein, setz
> aber halt noch einen passenden Index auf die Spalte. Das ganze kannst Du
> ja in einer Funktion machen.
D.h. aber, es gibt keine "elegantere" Lösung, um einen (wenn auch
unwahrscheinlichen) Konflik zu erkennen?
Ist es dann besser, auf die Fehlermeldung zu warten, dass der Key schon
existiert oder ist es besser vorher die Tabelle zu sperren und ein
SELECT zu machen, um zu schauen, ob der neu generierte Key evtl. schon
da ist?
Viele Grüße
Martin
Re: Unique Passwort erzeugen
am 07.06.2006 12:00:04 von Frank Schenk
Martin Schneider wrote:
> Ist es dann besser, auf die Fehlermeldung zu warten, dass der Key schon
> existiert oder ist es besser vorher die Tabelle zu sperren und ein
> SELECT zu machen, um zu schauen, ob der neu generierte Key evtl. schon
> da ist?
Kommt drauf an, wenn man zum Login noch nen Usernamen braucht reichts,
wenn dieser eindeutig ist, braucht man nur ein Passwort auf die spalte
ein unique klatschen und beim inserten Fehler abfangen und ggf. neues
Passwort generieren.
Frank
Re: Unique Passwort erzeugen
am 07.06.2006 12:08:38 von Harald Stowasser
Andreas Kretschmer schrieb:
> begin Martin Schneider schrieb:
>
>>Hallo!
>>
>>Ich habe in einer MyISAM-Tabelle eine Spalte "Passwort". Diese würde ich
>>gerne mit einem Passwort füllen, das 8 Zeichen lang ist und eine
>>zufällige Kombination aus a-z A-z 0-9 enthält. Das Passwort soll dabei
>>unique sein.
>>
>>Wie gehe ich hier am besten vor? Ich kann natürlich in meinem
>
>
> erzeuge den md5-hash aus der aktuellen Zeit und schneide daraus 8
> Zeichen raus. Das sollte mit relativ hoher Sicherheit unique sein, setz
> aber halt noch einen passenden Index auf die Spalte. Das ganze kannst Du
> ja in einer Funktion machen.
Ganz schlecht wenn man noch den Timestamp dazu mit in der Tabelle hat :-)
Re: Unique Passwort erzeugen
am 07.06.2006 14:34:00 von Andreas Kretschmer
Andreas
--
Andreas Kretschmer
Linux - weil ich es mir wert bin!
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net
Deutsche PostgreSQL User Group: http://pgug.de
Re: Unique Passwort erzeugen
am 07.06.2006 14:48:38 von Harald Stowasser
Martin Schneider schrieb:
> D.h. aber, es gibt keine "elegantere" Lösung, um einen (wenn auch
> unwahrscheinlichen) Konflik zu erkennen?
Nein. /Eventuell/ kannst du mit REPLACE eine Zeile einfach überschreiben.
> Ist es dann besser, auf die Fehlermeldung zu warten, dass der Key schon
> existiert oder ist es besser vorher die Tabelle zu sperren und ein
> SELECT zu machen, um zu schauen, ob der neu generierte Key evtl. schon
> da ist?
Ich frage max. x-mal in einer schleife mit LOCK TABLE und SELECT nach ob
die *Kennung* schon existiert.
Als Warnung:
Allerdings ist es (meist) falsch ein Passwort unique zu machen! Bei
Kombis aus Kennung/Passwort sollte die Kennung unique sein und das PW
nicht.
Eine Fehlermeldung wie 'Dieses Passwort existiert schon' verleitet
gerade dazu die (oft bekannten) Kennungen durchzuprobieren.
Die 3-Autorisierungsstufen:
*Identifizierung* Welches Objekt? Geht über das Unique Erkennungsmerkmal.
*Authentifizierung* Ist es wirklich dieses Objekt? Durch ein Merkmal
(Wissen (Passwort), Besitz(Schlüssel), Biometrische Eigenschaft.)
zwischen Objekt und Service kann die Identifizierung bestätigt werden.
Ist doch blöd, wenn der Service ausplaudert, welche Geheimnisse er
kennt. Auch bei biometrischen Eigenschaften kann man vermuten das es
gleiche oder ähnliche Merkmale gibt. Darum kann so ein Merkmal nicht
unbedingt auch identifizieren.
*Autorisierung* Darf das Objekt diesen Service beanspruchen? Zuweisen
von Rechten
Re: Unique Passwort erzeugen
am 07.06.2006 14:55:16 von Hartmut Holzgraefe
Andreas Kretschmer wrote:
> erzeuge den md5-hash aus der aktuellen Zeit und schneide daraus 8
> Zeichen raus. Das sollte mit relativ hoher Sicherheit unique sein, setz
> aber halt noch einen passenden Index auf die Spalte. Das ganze kannst Du
> ja in einer Funktion machen.
oder nutze das Ergebnis von UUID() als Ausgangsbasis,
das ist mit Sicherheit unique
--
Hartmut Holzgraefe, Senior Support Engineer .
MySQL AB, www.mysql.com
http://www.mysql.com/support/