• ich arbeite garde an einem eigenen forum und habe die ganze zeit angst dass mein login-system unsicher ist und wollte mal fragen was ihr konzept haltet:

    1. Username und Passwort werden eingegeben
    2. Prüfe ob Username und Passwort vorhanden sind
    3. Wenn Ja -> Zu Schritt 4, Wenn Nein -> Fehlermeldung
    4. Erstelle Session-ID
    5. Schreibe Session ID zusammen mit User-ID von dem User der sich eingelogt hat in eine Datenbank-Tabelle
    6. schreibe die selbe session-ID in einen cookie am lokalen rechner
    7. Bei jedem aufruf einer seite: suche cookie mit session-ID am rechner des nutzers, Wenn vorhanden -> zu schritt 8, wenn nicht->loggout
    8. suche die id in der datenbank, wenn vorhanden->zu schritt 9, wenn nicht->loggout
    9.hole user-ID und arbeite damit weiter

    sollte der benutzer den cookie löschen -> loggout
    wenn er sich wieder einloggt, schen ob die user-id in der session db vorhanden ist, wenn ja-> session -id ändern und neuen cookie schreiben, wenn nicht->normaler login


    ist dieses loginsystem sicher? oder gibts wo lücken?

  • du solltest wenn dann auch noch die user-id mit in einen cookie schreiben
    oder einfach nur eine session machen, ohne cookies, php hat da ja eigene funktionen

    Sei immer du selbst. Außer du kannst Batman sein. Sei immer Batman!

  • die uid würde ich schon mal nicht in den keks schreiben und an sich ist das System schon recht gut durchdacht....

    must halt nur die recihweite des cookies gut begrenzen, damit man es nicht über eine andere Seite klauen kann.

  • hmm könnte denn eine andere seite was damit anfangen?

    wie macht phpBB es eigentlich?

  • unerlaubten code zB über eine variable in dein mysql_query einfügen
    zB dein abfrage sieht so aus:
    select * from user where id = $bla
    und wenn er dann die variable $bla mit zB
    1; DROP TABLE user --
    dann is deine tabelle futsch ;)

    Sei immer du selbst. Außer du kannst Batman sein. Sei immer Batman!

  • Hier hast du mal ein Beispiel!

    Anstatt:

    Code
    $abfrage = "SELECT spalte1 FROM tabelle WHERE spalte2 = '".$_POST['spalte2Wert']."'";
    $query = mysql_query($abfrage) or die("Datenbankabfrage ist fehlgeschlagen!");

    Diese zb. verwenden:

    Code
    $abfrage = "SELECT spalte1 FROM tabelle WHERE 
               spalte2 = '".mysql_real_escape_string($_POST['spalte2Wert'])."'";
    $query = mysql_query($abfrage) or die("Datenbankabfrage ist fehlgeschlagen!");
  • und bei diesem code würde das so funktionieren:

    Code
    $sql = "SELECT * FROM portal_view WHERE view_id = \"mysql_real_escape_string($id)\" ";

    ???

  • was? nein
    Du musst doch die Zeichenkette fuer eine FUnktion unterbrechen

    Code
    $sql = "SELECT * FROM portal_view WHERE view_id = ".mysql_real_escape_string($id).";
  • naja das dachte ich auch aber:

    Code
    $sql = "SELECT * FROM portal_view WHERE view_id = \"$id\" ";

    is problemlos möchglich...

  • $id könnte aber auch den wert
    1" OR 1=1; DROP TABLE portal_view
    haben und damit alles löschen

    Sei immer du selbst. Außer du kannst Batman sein. Sei immer Batman!

  • gibt es aigentlich auser dem noch was worum ich achten muss bei der foren-entwicklung??