Hallo,
ich programmiere schon (ein wenig unprofessionell :) in Perl, nur mit dem Thema Sicherheit hab ich mich noch nicht befasst (befassen müssen). Nun mache ich ein Projekt, bei dem ein Login erforderlich ist. Dies wollte ich über Cookies lösen - was bislang auch ganz gut klappt.
Ich habe <a href="http://web.zdnet.de/internet/artikel/java/200202/perlcookies_03-wc.html
" target="_blank">diesen Codeschnipsel hier (neues Fenster) verwendet.
Die Idee ist folgende (ich habe kein SSL!):
- Der User gibt auf einem Formular Name und Passwort ein.
- Aus einer mySQL-Datenbank wird geprüft, ob die beiden Werte zusammenpassen.
- (Passwort ist in der DB im Klarnamen geschrieben! Ein Fehler?)
- Wenn richtig, wird ein Cookie anhand oberen Codes gesetzt, mit dem Usernamen als Value. Das Cookie verliert die Gültigkeit beim Schließen des Browsers.
- Bei sensitiven Userkommandos wird geguckt, ob ein Cookie da ist und wenn ja der Username ausgelesen und der Wert aus dem Cookie für jedwede Datenbankaktion verwendet. "Update ... where username = $cookie_username", o.ä.
Meine Fragen, da ich nicht weiss, wie man Daten übers Internet "abfischen" kann:
-
An welchen Stellen ist dieses System verwundbar, und wie hoch ist die wirkliche Gefahr?
-
Kann man das Cookie fälschen? Im Endeffekt steht ja nur der Username drin. Wenn man es fälschen kann, kann ich mich ja leicht für einen bestimmten User ausgeben - das Passwort brauch ich dann ja nicht...
-
Wie sähe ein "besseres" Cookie aus? Laut Codeschnipsel wird nur Username reingeschrieben. Im Cookie selbst sieht man noch ein paar Zahlen, woher kommen die denn?
-
Wie siehts mit der SQL-Datenbank und Passwort im Klarnamen aus? Was wäre die Alternative?
-
Ich lese immer von Session-Ids, was müsste ich denn damit machen? Da hatte jede Seite eine andere Meinung.
Danke für eure Hilfe.