Absichern von Cookies etc

dragon001

New Member
Bisher hab ich in meinem CMS eine anfälligere Routine zur Autentifikation verwendet.
Gestern hab ich sie gegen eine IP Autentifikation erweitert:

hier der entsprechende Klassen auszu:

PHP:
    #prüft ob es sich um einen User handelt
    function is_user(){
        $d = $this->__returnCookieData($this->__returnUserCookie());
        $dat1 = $this->__returnUserData($d[0]);
        $dat2 = $this->__returnSessionData($dat1["username"]);
        $uid = $d[0];
        $pwd = $d[2];
        $set = true;
        if($dat2["host_addr"]=!""){
            $set = false;
        }
        if((($set==false)or($dat2["host_addr"]==$_SERVER["REMOTE_ADDR"]))and($uid!="")and($pwd!="")and($pwd==$dat1["user_password"])){
            return true;
        }else{
            return false;
        }

    }
    #pricate Funktion, gibt das UserCookie aus
    function __returnUserCookie(){
        return $_COOKIE["user"];
    }
    #private Funktion, gibt die bestandteile des Cookies aus
    function __returnCookieData($user){
    	if(!is_array($user)) {
    		$user = base64_decode($user);
    		$user = addslashes($user);
    		$user = htmlentities($user, ENT_QUOTES);
    		$user = addslashes($user);
    		$user = explode(":", $user);
    	    $user[0] = addslashes($user[0]);
    	}
    	return $user;
    }
    #Abruf der User Datenbank
    function __returnUserData($uid){
        global $api;
        return $api["db"]->sql_fetchrow($api["db"]->sql_query("SELECT * FROM ".$api["prefix"]."_users where `user_id`='$uid';"));
    }
    #Abruf der User Datenbank
    function __returnUserNData($user){
        global $api;
        return $api["db"]->sql_fetchrow($api["db"]->sql_query("SELECT * FROM ".$api["prefix"]."_users where `username`='$user';"));
    }
    #Abruf der Session Datenbank
    function __returnSessionData($username){
        global $api;
        return $api["db"]->sql_fetchrow($api["db"]->sql_query("SELECT * FROM ".$api["prefix"]."_session where `uname`='".$username."';"));
    }

Ist dies eine Sichere Methode das System noch mehr abzusichern?
Eine reine Cookie Autentifikation ist ja bekanntlich wegen des cookie Diebstahls nicht unbedingt so zu empfehlen.
Session kann ich allerdings nicht verwenden, da ich die Gesamte Infrastrucktur erneuern müßte.
Dies ist zwar für das nächste update gedacht, doch bräuchte ich jetzt eine Lösung die das ganze noch ein großes Eck sicherer Macht.
Die Daten aus dem Session speicher werden direkt nach dem Anmelden gefüllt.
Jedoch nicht durch das Script selbst sondern durch die phpBB Einbindungsklasse sollten also sicher genug sein. (das die IP dem User auch wirklich gehört)
MFG
draco
 
dragon001 said:
Gestern hab ich sie gegen eine IP Autentifikation erweitert:
Nachteil: User mit rotierenden/wechselnden IP's werden ausgeschlossen.
Dazu gehören z.B. die T-Online-Proxies, AOL-Proxies, Anomynizer, Firmen-Proxies, redundante/doppelte DSL-Anschlüsse (ist momentan gerade bei kleinen Firmen voll in Mode), etc.

huschi.
 
aber nachteil ist halt, das geklaute cookies halt einen dann unbegrenzten Zugriff auf die Seite gewähren würden.
Hab ich vor kurzem erst bei einem Bekannten und dessen PHPNuke beobachten können.
Hatte nen Trojaner der sich ständig die Cookies geschnappt hat.
Sessions sind ja an den Browser gebunden.
Das Cookie müßt sich hier aber auch klauen lassen.
Jedoch weiß ich leider nicht wie dann die PHP Interne Routine weiterarbeitet.
Problem ist halt nur, ich hät gern ne routine die relative gut mein Systemschützt.
Deshalb hab ich die IP Prüfung mit eingeschlossen.
Ich werd auch noch beim Anmelde Vorgang für 5 fehlversuche nen IP Banner einbauen.
Dann sollte es eigentlich kein Problem mehr sein.
MFG
draco
 
Back
Top