Mike: Globale Variabeln

Hallo PHP Freaks ;o)

Man hört ja oft, dass globale Variabeln unsichere und unsaubere Programmierung sind. Nun stellt sich für mich die Frage, was sind alles globale Variabeln?

Alles was mit "global" deklariert wird oder über die URL übergeben wird? Oder gitbs da noch mehr?

Bitte um Hilfe, da ich gerne auf meinem Rechner die register_glbals ausschalten möchte...

Danke

Mike

  1. Holla,

    Globale Variablen sind POST & GET-Werte, die du wie normale Variablen behandeln kannst. z.B.:

    $_POST[var] wird zu $var
    $_GET[foo] wird zu $foo

    usw.

    Das ist total unsicher, damit kann man theoretisch einen alten POST-Wert mit GET überschreiben usw. Also schön auf OFF mit register_globals :)

    Lg,
    Philipp

    1. Hallo nochmal,

      um dich nicht falsch zu verstehen: Man muss nur anderst auf die Variabeln zugreifen? Wenn ich also von einem Dokument auf ein anderes Daten (in Variabeln) übertragen will, dann kann ich das nach wie vor mit POST machen? Muss jedoch statt $var mit $_POST[var] zugreifen?

      Dann verstehe ich jedoch nicht, wieso dies sicherer sein soll? Wenn jemand an der Url dann die Variable anhängt, wird dies doch genauso überschrieben... oder stehe ich gerade auf dem Schlauch? ;o)

      Was anderes:

      Die Einstellung register_globals=OFF beeinflußt aber nicht eine Header Passwortfunktion bzw. SESSIONS oder?

      Danke nochmals...

      Mike

      1. Hallo Mike,

        anstelle von $var (index.php?var=lala) schreibst du jetzt $_GET[var], "echo $_GET[var];" ergäbe also "lala", ebenso wie früher $var.

        Gleiches gilt für $_SESSION[..] und $_POST[...]. Der Sicherheitsvorteil: GET kann nicht mehr POST überschreiben. Beispiel:

        <?php

        if($var) {

        do();

        }

        else {

        exit;

        }

        ?>

        Hier willst du auf eine POST-Variable namens "var" warten, die aber leicht durch ein ?var=1 an die URL ersetzt werden kann.

        So wäre es sicher:

        <?php

        if($_POST[var] && (!$_GET[var]){

        do();

        }

        else {

        exit;

        }

        ?>

        Lg,
        Philipp

  2. Moin!

    Hallo PHP Freaks ;o)

    Man hört ja oft, dass globale Variabeln unsichere und unsaubere Programmierung sind. Nun stellt sich für mich die Frage, was sind alles globale Variabeln?

    Globale Variablen sind alle die, die im Hauptprogramm vorhanden sind. Das Hauptprogramm ist sozusagen die oberste Ebene, über der es keine weitere Ebene gibt, zu der man mit "return" zurückspringen könnte.

    Im Gegensatz dazu sind alle Variablen, die innerhalb von Funktionen benutzt werden, lokal.

    Alles was mit "global" deklariert wird oder über die URL übergeben wird? Oder gitbs da noch mehr?

    Global und URL sind zwei Paar Schuhe.

    Es ist unsauber, innerhalb einer Funktion mit dem Statement "global $variable" eine globale Variable in der Funktion bekannt zu machen. Das hat mit Unsicherheit aber nichts zu tun.

    Was die Problematik von register_globals=on angeht, siehe </archiv/2003/3/40235/#m220566> - das muß ich ja nicht wiederholen. :)

    Bitte um Hilfe, da ich gerne auf meinem Rechner die register_glbals ausschalten möchte...

    Machs einfach. :)

    - Sven Rautenberg

    --
    Signatur oder nicht Signatur - das ist hier die Frage!