linux-l: Passwörter unter Perl lesen.

Jens Dreger jens.dreger at physik.fu-berlin.de
Do Aug 10 11:51:37 CEST 2000


On Thu, Aug 10, 2000 at 11:25:56AM +0200, Thorsten Laatsch wrote:
> Hallo.
> 
> Ich moechte gerne auf einen Webserver ein Forum einrichten. Dazu soll man
> einen Benutzernamen und ein Passwort eingeben.
> Es sollen nur diejenigen Zugriff auf das Forum haben, die auch einen Account
> auf dem Linux-Rechner haben.
> Nun meine Frage. Wie kann ich unter Perl ein Passwort von einem User im
> Klartext lesen ???

Gar nicht. Mit den Passwoertern laeuft das so, dass Du das eingegebene
Password verschluesselst und mit dem verschluesselten in der passwd
vergleichst. Dieses bekommst Du z.B. mit getpwnam.

--------8<---------
my $user = "dreger";
my $pwd  = (getpwnam($user))[1];
my $test = "kjghkfjg";

if (crypt($test, $pwd) ne $pwd) { die "Wrong password!"; } 
else { print "Password OK\n"; }
----------8<--------

Crypt verwendet die ersten zwei Zeichen des verschluesselten Passwortes als
"salt" fuer den Verschluesselungalgorithmus (-> man crypt).

Wenn Du shadow-passwds benutzt, wird der getpwnam-Aufruf ein 'x' zurueckliefern, 
oder sonstwas, aber nicht das gesuchte password. Jedenfalls tut es das bei mir.

Ansonsten ist es ziemlich gefaehrlich, die Unix-Passwoerter in ein Web-Interface
eingeben zu lassen, da die Daten unverschluesselt ueber die Leitung gehen.

Gruss,

Jens.



Mehr Informationen über die Mailingliste linux-l