LSpreee: ist das Einschränken von *extract* von GET und POST möglich?

Hallo,

normalerweise würde ich extract nicht benutzen. Habe gehört, auf welche Weise das gefährlich sein kann. Jetzt binde ich jedoch ein riesiges Skript ein, was extract($_POST) und extract($_GET) benutzt. Und natürlich kommt es prompt zu einem Problem. Ich kann ganz einfach sensible Variablen manipulieren. Bevor ich diese Befehle jetzt rauswerfe und alle vom Skript tatsächlich benutzten Variablen einzeln hole, möchte ich gern wissen, ob man das extract beschränken kann. In etwa: extract($_POST)[ohne $verified_user];
Das würde schonmal kurzzeitig helfen.

Vielen Dank

  1. Hi!

    Bevor ich diese Befehle jetzt rauswerfe und alle vom Skript tatsächlich benutzten Variablen einzeln hole,

    Wieso "holen"? Die Arrays $_POST und _GET sind bereits gefüllt und lassen sich wie jede andere Variable auch verwenden. Du musst also nur noch darauf zugreifen.

    möchte ich gern wissen, ob man das extract beschränken kann.

    Alles was man mit einer bestimmten Funktion anstellen kann steht im PHP-Handbuch.

    Lo!

    1. Hello,

      Tipp:
      wenn Du extract() in einer Funktion anwendest, sind die extrahierten Variablen nur in dieser Funktion gültig.

      Der Nutzen von extract() belibt aber trotzdem sehr fraglich.

      Liebe Grüße aus dem schönen Oberharz

      Tom vom Berg

      --
      Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
      1. Hallo

        Der Nutzen von extract() belibt aber trotzdem sehr fraglich.

        Gerade dann, wenn man die Funktion auf GET oder POST anwendet (siehe die explizite Warnung im Manual).

        Tschö, Auge

        --
        Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
        Terry Pratchett, "Wachen! Wachen!"
        Veranstaltungsdatenbank Vdb 0.3
        1. Ich würde das so auch nicht programmieren :)

          Danke für Deine Antwort.

          1. Hallo

            Ich würde das so auch nicht programmieren :)

            Schon klar, ich hatte auch wahrgenommen, dass du von bereits fertigen, nicht eigenen Skripten sprachst. Naja, dann hast du ja jetzt etwas zu tun. Ich würde versuchen, eine Lösung zu finden, die extern funktioniert, also ein Prüfskript nach eigenen Vorgaben, dass am Anfang der Skripte eingebunden wird, und die geprüften Daten im nötigen Format (Variablennamen, Arrayschlüsselnamen ...) an das Skript ausreicht. Damit werden die Änderungen am Skript auf ein Minimum begrenzt, falls sich nicht noch andere Änderungsnotwendigkeiten ergeben.

            Tschö, Auge

            --
            Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
            Terry Pratchett, "Wachen! Wachen!"
            Veranstaltungsdatenbank Vdb 0.3
            1. Hello,

              um zu testen, welche Variablen per GET, POST, COOKIE usw. an die Scripte geleitet werden, also dann im Script später umgeschrieben werden müssen, eignet sich bestens die Option

              http://de2.php.net/manual/en/ini.core.php#ini.auto-prepend-file

              Mit einem auto_prepend_Script kann man wunderbar ein Logging für die externen Parameter aufbauen, ohne dass man an irgend einem vorhandenen alten Script Hand anlegen muss.

              Natürlich immer vorausgesetzt, dass die Option nicht schon genutzt wird.

              Liebe Grüße aus dem schönen Oberharz

              Tom vom Berg

              --
              Nur selber lernen macht schlau
              http://bergpost.annerschbarrich.de
    2. Danke erstmal für alle Antworten.

      Wieso "holen"? Die Arrays $_POST und _GET sind bereits gefüllt und lassen sich wie jede andere Variable auch verwenden. Du musst also nur noch darauf zugreifen.

      Ok, schon klar, sie existieren. Wenn im (wie gesagt vorhandenen, nicht von mir geschriebenen Skript) nun aber in der ersten Zeile

      extract($_POST);@extract($_GET);@extract($_FILES);@extract($_ENV);@extract($_COOKIE);

      steht und anschliessend auf zig Unterseiten viele hundertmale die Variablen direkt ihrem Namen nach benutzt werden, wird die Änderung in sicheren Code etwas dauern. Ich mach das auch. Ich wollte nur wissen, ob es bis dahin einen Befehl gibt, meine sensitiven Variablen zu schützen.

      Hast ja recht mir dem Manual. Mach ich auch sonst :(

      Werde mir nun mal den EXTR_SKIP-Parameter genauer angucken.

      Vielen Dank

      1. Hello,

        extract($_POST);@extract($_GET);@extract($_FILES);@extract($_ENV);@extract($_COOKIE);

        beachte die richtige[tm] Reihenfolge!

        Suchbegriff "Variables Order" im PHP-Handbuch!

        http://de2.php.net/manual/en/ini.core.php

        EGPCS wäre normal.

        Das Files-Array auszupacken ist das ganze Gegenteil von intelligent, bei den anderen ist es nur einfach dumm ;-))

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
      2. Vielen Dank nochmal, konnte mit dem EXTR_SKIP-Parameter schon hinreichende Ergebnisse erzielen.

        LSpreee