membran: Login mit Cookies - wie sicher machen?

Beitrag lesen

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.