#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 } } + Multi-Zitat Zitieren
#2 26. Oktober 2009 Zuletzt von einem Moderator bearbeitet: 15. April 2017 AW: Loginscript sicher? PHP: Abgesicherter Bereich - RR : Board [/ URL ] Schau selbst , ob du die Kriterien erfüllst ;) In dein [ b ]else[/ b ] könntest du zB eine SESSION - Variable einbauen , die überprüft , wie oft die Logins fehlgeschlagen sind ( Bruteforce ) und dann weitere Schritte eingehen ( IP für 24h bannen ). + Multi-Zitat Zitieren
#3 26. Oktober 2009 AW: Loginscript sicher? hui, netter thread, ich hab in der suche nach was anderem gesucht und deswegen den wohl übersehen danke + Multi-Zitat Zitieren
#4 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 + Multi-Zitat Zitieren
#5 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 ) ); + Multi-Zitat Zitieren