ist das Einschränken von *extract* von GET und POST möglich?
LSpreee
- php
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
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!
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
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
Ich würde das so auch nicht programmieren :)
Danke für Deine Antwort.
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
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
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
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
Vielen Dank nochmal, konnte mit dem EXTR_SKIP-Parameter schon hinreichende Ergebnisse erzielen.
LSpreee