• 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.

  • 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
    1. $abfrage = "SELECT spalte1 FROM tabelle WHERE spalte2 = '".$_POST['spalte2Wert']."'";
    2. $query = mysql_query($abfrage) or die("Datenbankabfrage ist fehlgeschlagen!");


    Diese zb. verwenden:


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


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


    ???

  • naja das dachte ich auch aber:


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


    is problemlos möchglich...