Domanda

Questo dovrebbe essere abbastanza semplice da quello che posso trovare on-line, ma io non riesco a farlo funzionare.

Ho un widget che voglio permettere ad altri di modificare (testo, immagini, css, ecc). così io ho fornito loro la possibilità di passare una pagina esterna in via una variabile URL.

Il problema è che non posso quindi accedere ai valori che forniscono tramite la pagina.

Sto cercando di eval tramite

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

Il file Mi viene superato contiene più variabili come questo

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

ho sospettato che questo dovrebbe funzionare. Preferirei non dover mettere 'echo' su ogni linea, perché è solo più per le altre persone a letame più tardi.

C'è qualcosa che non va con quello che ho ottenuto qui? Non riesco a farlo funzionare.

È stato utile?

Soluzione

Utilizzando eval sui file caricati dagli utenti è molto pericoloso. Non si dovrebbe mai permettere a nessuno di caricare file eseguibili ovunque nella propria applicazione web.

Si sarebbe meglio per memorizzare questi valori in un database e consentire agli utenti di modificare queste.

Edit: Questo è molto più pericoloso perché le variabili $_GET e $_POST possono contenere solo Valori , mentre utilizzando eval permette a qualcuno di iniettare codice eseguibile . Questo può consentire a qualcuno di eseguire codice dannoso sul vostro server con facilità.

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

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

Se questo è stato incluso in un file analizzato con eval, avrebbe appena cancellato tutti i file nella directory lo script è stato eseguito da.

Altri suggerimenti

Eval è più pericoloso di ricevere / post perché il contenuto inviato in grado di eseguire funzioni come 'include' in grado di accedere a qualsiasi file Apache ha privilegi di lettura, o shell_exec che può fare qualsiasi cosa nella shell l'utente apache può fare, etc.

get / variabili POST non hanno automaticamente l'accesso a questa funzionalità, che è ciò che li rende più sicuri.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top