2016-04-13 18 views
0

Ich entwickle ein Admin-System für benutzerdefinierte CMS. Auf allen meinen Seiten, die Teil der Admin-Seite sind, benutze ich eine check_user() -Funktion. Die check_user() Funktion nur, dass diese:

function check_user() 
{ 
    session_start(); 

    if ($_SESSION['username'] == "admin") { 

    } else { 
     header("location:admin.php"); 
    } 
} 

Obwohl es ein bisschen einfach scheint, ist dies genug, um unerwünschte Elemente von der Seite entfernt zu halten? Wie ausnutzbar ist $ _SESSION [] vars? Irgendwelche Vorschläge, um diese Funktion zu verbessern?

Vielen Dank im Voraus!

+0

Mögliches Duplikat von [Wie sicher sind PHP Sitzungsvariablen?] (Http://stackoverflow.com/questions/1181105/how-safe-are-php-session-variables) – PoX

Antwort

1

Im gegebenen Code, $ _SESSION ist nicht ausnutzbar IF register_globals ausgeschaltet ist (die auf allen aktuellen Installationen ausgeschaltet sein ... aber nur um sicher zu sein)

Obwohl je nachdem, wie diese Session-Parameter eingestellt werden, es könnte ausgenutzt werden. (d. h. Verwenden von Anforderungsparametern als Schlüssel in der Sitzungsvariablen zum Beispiel)

Um diesen Code zu verbessern, würde ich vorschlagen, immer eine Sitzung zu starten, unabhängig vom check_user Aufruf. Dadurch können Sie den check_user wiederverwenden.

+0

Wenn sich ein Benutzer anmeldet, wird er überprüft ob sich Benutzername und Passwort in der Datenbank in derselben Zeile befinden. Wenn dies der Fall ist, wird $ _SESSION ['Benutzername'] auf den Benutzernamen des Benutzers EG gesetzt: als Administrator wird $ _SESSION ['Benutzername'] auf "admin" gesetzt. – Zh4rsiest