[PHP] Loginscript sicher?

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Flyde, 26. Oktober 2009 .

Schlagworte:
  1. 26. Oktober 2009
    Loginscript sicher?

    Hi, ich mal wieder und mal wieder eine weitere Klasse von mir...
    Ich mach mir immer tierisch Gedanken um die Sicherheit meines Loginscripts also wollte ich einfach mal die Experten fragen

    Hab nochmal ein paar Extrakommentare zum verständnis eingefügt und teilweise Fragen im Code selbst gestellt

    PHP:
         public function  Login ( $post_user $post_pass )
        {    
            
    // Meine Logfile-Klasse, schreibt Aktivitäten mit, um z.B. attacken nachzuweisen (ggf. zu verhindern? Muss ich mir noch gedanken machen ;) )
            
    global  $log ;
        
            
    // Username wird erstmal von unreinheiten befreit, die einen SQL-Inject ermöglichen könnten
            
    $post_user  mysql_real_escape_string ( trim ( preg_replace ( "/[^a-zA-Z0-9]/" , "" , $post_user )));
            
    $post_pass  md5 ( $post_pass );  // Das Passwort wird ja eh umgewandelt und kann deshalb niemals zum Inject werden, richtig? :)
            
            
    $str  "SELECT id, username, passwort, groupID FROM " . TBL_USER . " WHERE username = '" . $post_user . "' AND passwort = '" . $post_pass . "'"
            
    $qry  mysql_query ( $str );
            
    $assoc  mysql_fetch_assoc ( $qry );
            
            
    // Abfrage, ob User und Passwort richtig sind
            
    if( $assoc [ 'username' ] ==  $post_user  &&  $assoc [ 'passwort' ] ==  $post_pass
            {
                
    // Session wird angelegt
                
    $_SESSION [ 'username' ] =  $post_user ;
                
    $_SESSION [ 'logged' ] =  true ;
                
    $_SESSION [ 'groupID' ] =  $assoc [ 'groupID' ];  // Für Gruppenrichtlinien (Berechtigungen)
                
                // Eintragen der Loginzeit
                
    $lastlogin  time ();
                
    $qry  mysql_query ( "UPDATE " . TBL_USER . " SET lastlogin = " . $lastlogin . " WHERE username = '" . $post_user . "'" );
                
                
    // 1 hab ich selbst definiert und ist einer von mehreren Log-Codes die ich später auslesen könnte, in dem Fall bedeutet es: User mit ID eingelogged um ZEIT
                
    $log -> Add ( 1 $assoc [ 'id' ]);
                
    header ( "LOCATION: " . $_SERVER [ 'HTTP_REFERER' ]);  // Zurück auf die Seite, wo man eben war...
                
    return  true // Login erfolgreich
            
    }
            else 
            {
                return 
    false // Login fehlgeschlagen
            
    }
        }
     
  2. 26. Oktober 2009
    AW: Loginscript sicher?

    hui, netter thread, ich hab in der suche nach was anderem gesucht und deswegen den wohl übersehen danke
     
  3. 26. Oktober 2009
    AW: Loginscript sicher?

    Solltest das Passwort evtl "salten" das heißt vor und nach dem eigentlichen Passwort eine Zufällige Zeichenkette Platzieren. Also bsp wenn man einen Account erstellt in die Datenbank nicht einfach md5($_POST['pw']); rein tun sondern md5($salt_start.$POST['pw'].$salt_end);. So das du dann wenn sich der User einloggt das selbe beim Vergleich machst. Das ganze dient dazu dass es Leuten erschwert wird das md5 passwort zu entschlüsseln und falls sie es entschlüsselt haben ist es nicht sofort das richtige passwort.

    mfg
     
  4. 26. Oktober 2009
    AW: Loginscript sicher?

    Good old salt & pepper Am besten sind natürlich variable salts - zB
    PHP:
    $pwdhash  md5 sha1 ( substr ( $pwd 1 ) .  $pwd  sha1 ( $pwd , - 1 ) );
     
  5. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.