Diskusion: RegisterGlobal = On umgehen....

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Diskusion: RegisterGlobal = On umgehen....

    Hallo,

    ich muß da mal eine Diskusion anstoßen und eure meinung dazu erfragen...

    also ich habe ein php-programm (mehr als 30.000 zeilen). In diesem werden alle übergeben werte noch per globalregister=on umgewandelt. das dies ein sicherheitsrisiko ist, ist mir klar! Da es aber nicht so einfach ist diese masse an datein und zeilen auf anhieb umzuschreiben, habe ich mir überlegt eine Art filter vorzuschalten...

    also so ungefähr über folgenden code:

    PHP-Code:
    foreach ($_REQUEST as $key=>$value) {
        
    $GLOBALS[$key] = $value

    dieser wird in einer config-datei ausgeführt, die immer am anfang jedes scriptes steht.
    natürlich würde ich rein von der prüfung her $key und $value noch auf bestimmte längen prüfen. aber im großen und ganzen solle es das schon gewesen sein.

    Also abgesehen von der schrittweisen anpassung der Datein fällt mir jetzt keine bessere lösung ein, um das ganze auch bei registerglobal=OFF laufen zu lassen.

    was meint Ihn dazu?

    Meinungen bedenken usw wären hier gefragt und gewünscht!

    Danke

  • #2
    was meint Ihn dazu?

    Meinungen bedenken usw wären hier gefragt und gewünscht!
    Offensichtlich begehst du eine Dummheit. Die Rache wird folgen.
    Aber du willst es ja so....
    Hiermit kannst du die Dummheit weiter optimieren: import_request_variables()
    Wir werden alle sterben

    Kommentar


    • #3
      Ich kann schon verstehen, dass du die 30k Zeilen nicht alle durchgehen willst, aber damit kannst du dieses Sicherheitsrisiko erstmal ausschließen und bist kompatibel zu kommenden PHP-Versionen.

      Kommentar


      • #4
        Ich würde es Dir zwar auch nicht empfehlen, aber wie combie schon schreibt mit

        PHP-Code:
        import_request_variables('gpc','prefix_'); 
        kannst du $_GET (g), $_POST (p) und $_COOKIES (c) importieren. Die Buchstaben g, p und c kannst Du auch aus dem ersten String entfernen, um das jeweilige Array nicht zu importieren. Der zweite String "prefix_" wird vor den Variablennamen gesetzt (z.B. um ein Überschreiben von vorhandenen Variablen zu vermeiden -> $prefix_parameter)

        Wenn Du willst, dass sich der Wert in $_GET['parameter'] nicht ändert, wenn Du $parameter veränderst, dann benutze stattdessen

        PHP-Code:
        extract($_GET); 
        Deine Skripte musst Du aber auf jeden Fall überarbeiten, denn wenn Du die Variablen importierst, dann musst Du sicherstellen, dass eine beliebe Vorbelegung jeder Variablen egal ist!

        Sollte die Vorbelegung nicht egal sein, dann füge ein

        PHP-Code:
        unset($variable); 
        vorher ein.

        Trotzdem lohnt sich die Umstellung, wenn das Skript noch lange funktionieren soll!

        Viele Grüße

        SLind

        Kommentar


        • #5
          Original geschrieben von PHP-Desaster
          Ich kann schon verstehen, dass du die 30k Zeilen nicht alle durchgehen willst, aber damit kannst du dieses Sicherheitsrisiko erstmal ausschließen und bist kompatibel zu kommenden PHP-Versionen.
          Genau, ab PHP6 ist nämlich endgültig Schluss mit register_globals. Sollen deine Skripte also auch für die zukünftigen Versionen funktionieren, musst du früher oder später (besser früher) ohnehin ran an die Zeilen.


          Grüße
          Nieder mit der Camel Case-Konvention

          Kommentar


          • #6
            Ich würde sowas nicht als Last ansehen, sondern sogar als Chance. Du kannst alles noch einmal durchgehen, den Code E_NOTICE-Kompatibel machen, alte Fehler beseitigen, etc. Das einzige "Problem" ist der zeitliche Aufwand.

            Kommentar


            • #7
              Ich stimme meinen Vorrednern zu. Beiß lieber jetzt in den sauren Apfel und räums auf. Alles andere ist Käse.

              Kommentar


              • #8
                Danke euch für die anregungen!

                das umschreiben habe ich ja bereits begonnen, aber bei 30k zeilen muß auch jedes umschreiben nochmal getestet werden. zumal das programm ja nicht von mir geschrieben wurde, sondern nur weiterentwickelt wird.

                MfG

                Jens

                Kommentar

                Lädt...
                X