Schrift
[thread]6924[/thread]

Regex für Passwortprüfung



<< >> 9 Einträge, 1 Seite
Gast Gast
 2005-04-22 22:43
#54148 #54148
Hallo
Hab seit kurzem mit Perl angefangen, wollte ein Skript schreiben der ein Passwort prüft.

8 Stellig
mind. Klein- und Grossbuchstaben
mind. eine Zahl
darf Vorname bzw. Nachname nicht beinhalten
keine Umlaute oder Leerzeichen
Code: (dl )
1
2
3
4
5
6
if( ($check =~ /\S([a-zA-Z]{7}[0-9]{1})(\b$vorname\b)(\b$nachname\b))[^äöüÄÖÜ]/i) ) {
print "super";
}
else {
print "\n\n\n\t\tPasswort nicht gueltig!\n\n\n";
}

Dies will aber nicht funktionieren, kann mir jemand helfen?

Gruss
Savvo
esskar
 2005-04-22 22:51
#54149 #54149
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
wieso keine sonderzeichen?
wieso nur acht zeichen?
dominicn
 2005-04-22 22:56
#54150 #54150
User since
2003-08-08
327 Artikel
BenutzerIn
[default_avatar]
Ich würd es wahrscheinlich nacheinander prüfen. Ob man die ganzen Bedingungen in eine Regex packen kann weiß ich nicht genau, da ich keine Möglichkeit kenne, die Reihenfolge variabel zu machen ...

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
if ($check =~ /[a-z]/ and 
   $check =~ /[A-Z]/ and
   $check =~ /[0-9]/ and
   $check !~ /\b$vorname\b/ and
   $check !~ /\b$nachname\b/ and
   $check =~ /^[a-zA-Z0-9]+$/
   ) {
   print "super";
} else {
   print "Passwort ungültig.";
}
dominicn
 2005-04-22 22:57
#54151 #54151
User since
2003-08-08
327 Artikel
BenutzerIn
[default_avatar]
[quote=esskar,22.04.2005, 20:51]wieso keine sonderzeichen?
wieso nur acht zeichen?[/quote]
Das ist eine berechtigte Frage, bei meinen Passworttests verlange ich normalerweise auch, dass mindestens 1 Sonderzeichen dabei ist.
Das macht die Sache ja gerade spannend.
Savvo
 2005-04-22 23:14
#54152 #54152
User since
2005-04-22
2 Artikel
BenutzerIn
[default_avatar]
@esskar
Hab mir eigentlich nicht viel dabei überlegt betr. den Sonderzeichen.

Ein Passwort mit min. 8 Stellen ist nicht gut genug?

Dies sollte nur ein Testskript sein.

Gruss
Savvo
Savvo
 2005-04-22 23:22
#54153 #54153
User since
2005-04-22
2 Artikel
BenutzerIn
[default_avatar]
@dominicn
Hallo besten Dank
doch leider funktioniert es ebenfalls nicht.

Ich kann ja den ganzen Code posten
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/perl

print "Vorname: "; chop ($vorname=<STDIN>);
print "Nachname: "; chop ($nachname=<STDIN>);

print "Passwort: "; chop ($passwort=<STDIN>);

if ($passwort =~ /[a-z]/ and
  $passwort =~ /[A-Z]/ and
  $passwort =~ /[0-9]/ and
  $passwort !~ /\b$vorname\b/ and
  $passwort !~ /\b$nachname\b/ #and
  #$passwort =~ /^[a-zA-Z0-9]+$/
  ) {
  print "super";
}
else {
  print "Passwort ungültig.";
}
\n\n

<!--EDIT|Savvo|1114197768-->
esskar
 2005-04-22 23:26
#54154 #54154
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
wie wäre es mit mindestens 8 zeichen? oder ist 8 keine Höchstgrenze?
ich würde alle schon alle darstellbarenzeichen; also ascii 0x20 bis 0x7e zulassen. wobei min. 1 zahl und min 1 sonderzeichen (0x20-0x2f,0x3a-0x40,0x5b-0x60,0x7b-0x7e) vorkommen sollte
Strat
 2005-04-23 02:40
#54155 #54155
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Achtung, Falle:
x) chop entfernt das letzte zeichen einer zeichenkette
x) chomp entfernt den Zeilenumbruch am Ende einer Zeichenkette, wenn einer vorhanden ist
Unter Unix/Linux/Mac kann man zwar oft chop anstelle von chomp verwenden, aber unter windows ergeben sich da manchmal seltsame ergebnisse, wenn das \r noch am ende des strings steht...
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
pKai
 2005-04-23 14:09
#54156 #54156
User since
2005-02-18
357 Artikel
BenutzerIn
[default_avatar]
Aber wenn es mit dem Skript Probleme gibt, dann nicht wg. chop, das hier völlig gefahrlos (auch unter Windows) verwendet werden kann, da lt. Skript STDIN ja nicht im binmode() gelesen wird.

Zwei Sachen sind aus meiner Sicht noch bemerkenswert:
[*] Usereingaben, die in Regexen Verwendung finden ($vorname, $nachname) sollten idR mit quotemeta() "sicher" gemacht werden, da sonst über die Eingabe der Regex verwirrend manipuliert werden kann.[*] Eine (nicht abgefangene) Leereingabe zu den Namen führt immer zu "ungültig", da jedes (nichtleere) PW /\b\b/ erfüllt.

Ansonsten funktioniert das gepostete Skript eigentlich so wie erwartet!?
I sense a soul in search of answers.
<< >> 9 Einträge, 1 Seite



View all threads created 2005-04-22 22:43.