Ergebnis 1 bis 10 von 10

Thema: PHP: Die register_globals-Problematik

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    register_globals hat noch eine weitere Gefahrenquelle: Bei PHP ist es nicht üblich, Variablen explizit zu initialisieren. Wenn man jetzt also irgendwo $foobar verwendet und ein User den URI durch &foobar=bla ergänzt, dann hat $foobar im Skript bei der "Initialisierung" den Wert bla. So sind u.U. Angriffe möglich.

    Mit folgendem Snippet (als allererstes auszuführen) kann man das abstellen. Effektiv simuliert es register_globals = off.
    PHP-Code:
    foreach($_REQUEST as $key => $value)
    {
      unset($
    $key);

    Es ich nicht nötig, zu überprüfen, ob die Variablen auch existieren; PHP hat kein Problem damit, nichtexistente Variablen zu nullen.

  2. #2
    Zitat Zitat von Jesus_666 Beitrag anzeigen
    register_globals hat noch eine weitere Gefahrenquelle: Bei PHP ist es nicht üblich, Variablen explizit zu initialisieren. Wenn man jetzt also irgendwo $foobar verwendet und ein User den URI durch &foobar=bla ergänzt, dann hat $foobar im Skript bei der "Initialisierung" den Wert bla. So sind u.U. Angriffe möglich.

    Mit folgendem Snippet (als allererstes auszuführen) kann man das abstellen. Effektiv simuliert es register_globals = off.
    PHP-Code:
    foreach($_REQUEST as $key => $value)
    {
      unset($
    $key);

    Es ich nicht nötig, zu überprüfen, ob die Variablen auch existieren; PHP hat kein Problem damit, nichtexistente Variablen zu nullen.
    Das ist dann aber lustig bei ?_GET=xd&_POST=fu - Schon sind die beiden Arrays leer

  3. #3
    Zitat Zitat
    mal daran gedacht, dein geld damit zu verdienen, dau sichere bücher übers web zu schreiben? Das war sehr schön anschaulich erklärt, hab schon schlechteres in vielen komerziellen Büchern gelesen.
    Naja, es gibt Dinge, die ich kann und Dinge, die ich nicht kann. Das Bücherschreiben gehört zu letzterem ^^ So lange ich einen Beruf ausübe und hier nicht verbannt werde spricht auch nichts dagegen weiterzumachen (sofern mir nicht die Ideen ausgehen).

    Zitat Zitat
    Oder mach zumindest sowas wie Selfhtml, (das ja wohl eh vor dem aus steht?)
    Jain. Es wird wohl kein SELFHTML 9 geben. Die Version 8.1 wird aber noch gepflegt. Bald erscheint 8.1.2, in welchem nicht nur von mir gemeldete Fehler korrigiert werden, sondern auch deutlich wird, dass SELFHTML im aktuellen Zustand einfach veraltet ist.

    Zitat Zitat
    Dazu sei gesagt, dass man die Einstellung in der php.ini per variables_order bzw. per gpc_order ändern kann.
    Wobei ich das jetzt ausgelassen habe, da das der Benutzer in der Regel nicht ändern kann. Zu register_globals = Off wird er ja gezwungen und sollte daher Bescheid wissen. Dann sind die von dir genannten Einstellungen auch nicht mehr so wichtig.

    Zitat Zitat
    Bei PHP ist es nicht üblich, Variablen explizit zu initialisieren.
    Danke, daran hatte ich nicht gedacht. Werde bei einer späteren Aktualisierung sehen, wie ich das mit einbauen kann.

    Zitat Zitat
    Das ist dann aber lustig bei ?_GET=xd&_POST=fu - Schon sind die beiden Arrays leer
    Nein, _REQUEST enthält ja nicht _GET und _POST sondern ist eine Zusammenfassung aus dem Inhalt von _GET, _POST und _COOKIE. Hier werden dann ähnlich rg=On die Variablen überschrieben, die den selben Namen teilen.

  4. #4
    Zitat Zitat von mitaki Beitrag anzeigen
    Nein, _REQUEST enthält ja nicht _GET und _POST sondern ist eine Zusammenfassung aus dem Inhalt von _GET, _POST und _COOKIE. Hier werden dann ähnlich rg=On die Variablen überschrieben, die den selben Namen teilen.
    Nein, es stimmt tatsächlich. Wenn $_REQUEST einen Schlüssel namens _GET hat und ich $$eintrag unsette wird $_GET genullt.

    Hier ist eine sicherere Version:
    PHP-Code:
    if ('' != ini_get('register_globals'))
    {
      foreach(
    $_REQUEST as $key => $value)
      {
        
    $lkey strtolower($key);
        if (
    $lkey != 'globals' && $lkey != '_get' && $lkey != '_post' &&
            
    $lkey != '_cookie' && $lkey != '_files' && $lkey != '_request')
        {
          unset($
    $key);
        }
      }


Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •