CUCM Logo
Di  28.05.2019CompUser Club Mainspitze e.V.https://www.google.de/maps/place/Moselstraße+21,+65428+Rüsselsheim/@49.9909897,8.4162473,20z/data=!4m2!3m1!1s0x47bd99327b0f7cb9:0x7450272f33dc29e065428 RüsselsheimMoselstrasse 21
Di  28.05.2019CompUser Club Mainspitze e.V.https://www.google.de/maps/place/Moselstraße+21,+65428+Rüsselsheim/@49.9909897,8.4162473,20z/data=!4m2!3m1!1s0x47bd99327b0f7cb9:0x7450272f33dc29e065428 RüsselsheimMoselstrasse 21
Fr  31.05.2019CompUser Club Mainspitze e.V.https://www.google.de/maps/place/Moselstraße+21,+65428+Rüsselsheim/@49.9909897,8.4162473,20z/data=!4m2!3m1!1s0x47bd99327b0f7cb9:0x7450272f33dc29e065428 RüsselsheimMoselstrasse 21
 

Blog: PHP Sicherheit #3: register_globals

Autor: Nick   Kommentare (0)   Kurz URL: -   Bei Twitter speichern   Bei Facebook speichern   Bei Digg speichern   Bei Delicious speichern   Bei Mr. Wong speichern   Bei Google Bookmarks speichern
01.08.2012
Mit der Option register_globals stehen externe URL Parameter direkt im PHP Code als Variable zur Verfügung. Einfach $admin=true setzen und Admin werden?

Die Sicherheitslücke entsteht vor allem durch nicht initialisierte Variablen, die so überschrieben werden können.

Beispiel für aktive register_globals
http://meine_url/mein_skript.php?user=ich
mein_skript.php:
<?php 
  echo $user; // Ausgabe: ich 
?>

Das register_globals Problem

Die Verwendung zeugt vom schlechten Programmierstil. Jeder kann beliebige Variablen im Code erzeugen. Weiterhin fällt im Code die Unterscheidung schwer, zwischen normalen und extern definierten Variablen zu unterscheiden. Eine Sicherheitslücke entsteht insbesondere dann, wenn eine Variable nicht ordentlich initialisiert und extern überschrieben wird.

Beispiel für Entstehung und Ausnutzung von register_globals Sicherheitslücken
if ($user->admin_check() == true)
  $admin = true;

if ($admin)
{
   echo "Ich bin Admin";
   // Do Admin Stuff
}

Hier ist das Problem, das $admin nur gesetzt wird, wenn die Admin Überprüfung erfolgreich war. Ein Aufruf mit http://meine_url/?admin=true würde im Skript $admin auf true setzen und man wäre automatisch Admin, weil keine weitere Variablen Überprüfung stattfindet.

Beispiel für die Vermeidung der Lücke
$admin = false;
if ($user->admin_check() == true)
  $admin = true;

if ($admin)
{
   echo "Ich bin Admin";
  // Do Admin Stuff
}

Im Skript wird die $admin Variable standardmässig mit false initialisiert und bei erfolgreicher Admin Prüfung auf true gesetzt. So besteht keine Möglichkeit den Wert extern zu ändern bzw. dies hat keinen Effekt.

Zum Glück ist register_globals mittlerweile bei den meisten Installationen abgeschaltet. Das PHP Team hat register_globals als deprecated ("veraltet") markiert und wird mit einer der nächsten (Major) Versionen komplett aus PHP verschwinden.

Zur Artikel Übersicht PHP Sicherheit


Den Artikel empfehlen

Ähnliche Blog Beiträge

PHP Sicherheit: Wie wird PHP Code gehackt

http://www.cucm.de/blog/115/php_sicherheit_wie_wird_php_code_gehackt/
24.07.2012 - Quasi kein Tag vergeht, ohne das über Webseiten Einbrüche und gestohlene Daten berichtet wird. Die Methoden der Hacker sind stehts gleich und bereits mit wenigen Massnahmen ausser Gefecht gesetzt.  Weiter lesen

Weitere Blog Artikel vom Compuser Club

Dem Computer Club folgen und über Neuigkeiten informiert werden:

RSS Feeds RSS Feeds   CUCM @ Twitter Twitter   CUCM @ Facebook Facebook   CUCM @ Google+ Google+
 
Bislang wurde kein Kommentar zu diesem Beitrag abgegeben. Sei erster!
 

Kommentar Verfassen

 
(erforderlich)
 
(erforderlich)
Ihre E-Mail Adresse wird nicht auf der Seite veröffentlicht. Sie dient ausschliesslich der möglichen Kontaktaufnahme unserseits.
 
 
 
 

3) Hinweis zur Freischaltung

Um Spam Missbrauch zu verhindern, werden alle Kommentare zuerst von uns geprüft. Daher kann es einen Augenblick dauern, bis Ihr Kommentar auf unserer Webseite erscheint. Spam oder was wir dafür halten, wird unsererseits kommentarlos gelöscht.
To avoid Spam on our Page, we check all Comments before publish. So save you and us Time and dont Spam.


CompUser Club Mainspitze e.V.   |  65428 Rüsselsheim   |  Moselstrasse 21 (Post Gebäude: 1. Stock)