klassmann: aktuelle 4.2.0 und register_globals = off

Hallo zusammen,

folgende Frage:
In der aktuellen PHP-Version (4.2.0) ist ja register_globals standardmässig deaktiviert.
Wenn ich meine Seite jetzt bei einem Provider liegen habe, wird sie ja nicht mehr funktionieren, sofern er den Schlüssel in der php.ini nicht ändert. Habe ich sonst irgendwelche Möglichkeiten "anständig" mit Formularen und Sessions zu arbeiten?

Mit besten Dank!

Peter

  1. In der aktuellen PHP-Version (4.2.0) ist ja register_globals standardmässig deaktiviert.
    Wenn ich meine Seite jetzt bei einem Provider liegen habe, wird sie ja nicht mehr funktionieren, sofern er den Schlüssel in der php.ini nicht ändert. Habe ich sonst irgendwelche Möglichkeiten "anständig" mit Formularen und Sessions zu arbeiten?

    Natürlich. Sämtliche Daten, die mit register_globals als eigene Variablen erscheinen, stehen seit Urzeiten auch in Feldern wie zum Beispiel $HTTP_SERVER_VARS[]. Bei diesen Feldern hat sich nichts AFAIK geändert.

    Die Einzelvariablen haben immerwieder eine Sicherheitslücke dargestellt, da man sie auch einfach über die URL erzeugen und dem Skript damit Dinge vorgaukeln kann, die nicht stimmen (einen eingelogten Nutzer zum Beispiel mittels nutzerbereich.php?authenticated=true), deswegen wurden die Dinger quasi rausgeschmissen.

    Als einfacher zu benutzenden Ersatz sowohl für die Einzelvariablen als auch für die Felder à la $HTTP_SERVER_VARS sind Felder dazugekommen, die IIRC mit _ anfangen und global gültig sind (also ohne zutun auch innerhalb von Funktionen).

    Die einzelnen Namen hab ich jetzt vergessen, aber als versierter PHP-Programmierer wirst Du die sicher selbst herausfinden können ;)

    Falls Deine Skripte nicht das oben beschriebene Problem nicht-initalisierter Variablen aufweisen und Du nicht alles ändern willst, solltest Du auch in der.htaccess register_globals auf true setzen können. Wie genau, steht in der PHP-Anleitung, Kapitel Konfiguration (wer hätte das gedacht:).

    Gruß,
      soenk.e

    1. Moin,

      Die Einzelvariablen haben immerwieder eine Sicherheitslücke dargestellt, da man sie auch einfach über die URL erzeugen und dem Skript damit Dinge vorgaukeln kann, die nicht stimmen (einen eingelogten Nutzer zum Beispiel mittels nutzerbereich.php?authenticated=true),

      Aber auch nur wenn der Programmierer geschlafen hat und solche Codes sollte man eh besser nicht auf das Web loslassen.

      Falls Deine Skripte nicht das oben beschriebene Problem nicht-initalisierter Variablen aufweisen und Du nicht alles ändern willst, solltest Du auch in der.htaccess register_globals auf true setzen können.

      Als hässlicher Hack könntest du auch einfach die betreffenden Array in einer foreach()-Schleife durchgehen und die globalen Variablen (in der richtigen Reihenfolge und _vor_ deiner Initialisierung!) per Hand setzen.

      --
      Henryk Plötz
      Grüße aus Berlin