Spielplatz für Entwickler
Spielplatz für Entwickler Alles über Web 2.0 und Webdesign, Ajax, XHTML, Javascript, CSS und PHP/MySQL.

Warum funktionieren meine Links nicht?

21. November 2008 in Php / Mysql

Etwas ältere PHP Scripte sind manchmal etwas unschön programmiert und verwenden ausschließlich globale Variablen. Das war sehr bequem, aber öffnet so manche Sicherheitslöcher. Denn alte PHP-Versionen übernehmen ohne Prüfung Variablen, die ihnen per POST oder aus der URL übergeben werden. Seit PHP 4.2 stehen diese Informationen nur noch in besonderen, superglobalen Arrays zur Verfügung.

Es ist dringend empfohlen, den Wert der Konfigurationsvariable register_globals auf off zu lassen. Wer dennoch ein altes Script auf einen Server mit deaktivierten globalen Variablen laufen lassen möchte, kann´s gerne mit dem nachfolgenden PHP Code versuchen. Es ist wichtig, dass dieser in allen PHP Dateien vor dem eigentlichen PHP Code eingebunden wird.

if( ! ini_get("register_globals") ) { // Aktiviert die globalen Variablen
  extract($_SESSION, EXTR_SKIP);
  extract($_GET, EXTR_SKIP);
  extract($_POST, EXTR_SKIP);
  extract($_COOKIE, EXTR_SKIP);
}

Mehr Infos zum Thema “Globale Variablen” gibt´s hier.

Bookmark and Share

, ,

Trackback from your own site RSS 2.0 feed

Verwandte Artikel

Kommentare

  1. 1.

    Ich bin der Meinung, dass register_globals auf jedem Server auf off gestellt sein sollte.

    Zwar ist die Einstellung register_globals on eigentlich nicht unsicher, es birgt aber bei fehlerhafter Programmierung Sicherheitslücken. Wenn register_globals die Einstellung on hat, kann ein Angreifer den Programmablauf von außen negativ beeinflussen, wenn der Programmierer die Initialisierung der Variablen vor Ihrer Verwendung vergißt.

    Kommentar von Webdesign Berlin - 27. März 2009 um 07:43

Kommentieren

 

RSS Feed