Zur Ueberpruefung hatte ich vorher folgende Anweisungen (etwas vereinfacht):
...
my $login = param('login');
my $query = "select usr_pwd from USERtab where usr_login like '$login' and usr_del='false'"; // query, das spaeter ausgefuehrt wird
Damit hast du ein Prima Skript für mysql Injection geschaffen und eröffnest jedem Hacker den zugriff auf deine Datenbanken und deine Anwendung.
Jetzt habe ich gemerkt, dass bei Vorkommen von % im login dies als Platzhalter interpretiert wird. Worauf ich das like durch = ersetzt habe.
Der Platzhalter ist gut und sollte auch verwenden werden, dann hast du weder das oben genannte Problem noch eins mit Sonderzeichen:
http://search.cpan.org/~timb/DBI-1.52/DBI.pm#Placeholders_and_Bind_Values
So war es aber immernoch nicht sicher, da der User bei login ja beispielsweise "' or '1=1" schreiben haette koennen und das Script dann trotzdem korrekt ausgefuehrt worden waere. Noch schlimmer waere es natuerlich, wenn er dort die Datenbank mit update oder insert direkt manipuliert, was bisher wohl auch moeglich gewesen waere.
Genau, gut erkannt. wie gesagt google mal nach mysql injection, da wirst du Seiten finden, die genau dieses beschreiben
Und ein zusätzlicher Tipp: die Doku lesen!
Struppi.
Javascript ist toll (Perl auch!)