0251 / 590 837 15
info@a-coding-project.de

Sicheres PHP trotz register_gobals on

PHP Logo

PHP Logo

Achtung Sicherheitslücke: Viele Provider haben Register Globals auf On. Damit können Hacker einfach Variablenwerte ändern! Leider ist es bei den Providern oft nicht möglich diese Einstellung zu Ändern. Erfahre in diesen Artikel, wie man trotzdem eine sichere PHP-Anwendung macht.

Wenn register_globals auf on ist, kann man zum Beispiel wenn man einen GET-Parameter übergibt, ohne das $_GET darauf zugreifen.

Jedoch werden alle Parameter die übergeben werden in die Variable geschrieben.

Ein Beispiel, wo es unsicher wird:

<?PHP

if($password == md5(„test“)){

$login = true;

}

if($login){

echo „Eingeloggt!“;

}
?>

In diesem Beispiel wurde geprüft, ob das Passwort der MD5-Hash von Test ist. Wenn dies so ist, wird die Variable $login auf true gesetzt.

Wenn man die Variable nun noch nicht benutzt hatte, kann ein Hacker sich einloggen, wenn er einfach ein &login=true an die URL hängt. Dann wird nämlich die Variable $login auch schon gesetzt und die If-Abfrage ist erfolgreich.

Der simple Trick dies zu verhindern ist, dass man am Anfang der Seite einfach das $login auf false setzt, so kann es ruhig zum Start true sein, aber es wird abgeändert, so dass es dann nur noch true ist, wenn es im eigenen Code so gesetzt wurde.

Hier das bessere Beispiel:

<?PHP

$login == false; //Das ggfl. vom Hacker übergebene login wird überschrieben

if($password == md5(„test“)){

$login = true;

}

if($login){

echo „Eingeloggt!“;

}
?>

Weitere Interessante Artikel zum Thema: