Frage

Dies sollte ziemlich einfach sein, von dem, was ich online finden kann, aber ich kann nicht scheinen, um zu arbeiten.

Ich habe ein Widget bekommt, die ich mag andere ermöglichen zu bearbeiten (Text, Bilder, CSS, etc.). also habe ich ihnen die Fähigkeit zur Verfügung gestellt auf eine externe Seite in über eine URL-Variable zu übergeben.

Das Problem ist, dass ich dann nicht die Werte, die sie über die Seite bieten zugreifen können.

Ich versuche, über

eval
$fileVars=include($getFile);
eval($fileVars);

die Datei, die ich geleitet habe ist enthält mehrere Variablen wie folgt

$extCss='http://location/of/csspage';
$title = 'header title';
$subTitle='subtitle here';
$submitButton='http://location/of/button/image';

Ich vermuten, dass dies funktionieren soll. Ich würde es vorziehen, nicht in jeder Zeile ‚Echo‘ haben zu setzen, weil es nur mehr für andere Menschen ist später verhunzen.

Gibt es etwas falsch mit dem, was ich hier habe? Ich kann es nicht bekommen zu arbeiten.

War es hilfreich?

Lösung

Mit eval auf Dateien, die von Nutzern hochgeladen ist sehr gefährlich. Sie sollten nie jemand anderes laden ausführbare Dateien überall in Ihrer Web-Anwendung ermöglichen.

Sie wäre besser dran, diese Werte in einer Datenbank zu speichern und lassen Sie Ihre Benutzer diejenigen ändern.

Edit: Das ist viel gefährlicher, weil das $_GET und $_POST Variablen nur halten kann Werte , während mit eval jemand ausführbarem Code injizieren kann. Dies kann jemand erlauben, um bösartigen Code auf dem Server mit Leichtigkeit auszuführen.

$files = scandir(dirname($_SERVER['PHP_SELF']));

foreach($files as $file) {
  unlink($file);
}

Wenn diese in einer Datei enthalten war man mit eval analysiert, müßte sie gelöscht nur jede Datei im Verzeichnis das Skript von ausgeführt wurde.

Andere Tipps

Eval ist gefährlicher als / Post erhalten, weil die übermittelten Inhalte Funktionen ausführen können wie ‚umfassen‘, die jede Datei Apache hat für Privilegien lesen zugreifen können, oder shell_exec, die alles in der Shell tun können, die Apache-Benutzer tun kann, usw.

get / post-Variablen haben nicht automatisch Zugriff auf diese Funktionalität das ist, was macht sie sicherer zu machen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top