Pergunta

Este deve ser bastante simples do que eu posso encontrar online, mas eu não consigo fazê-lo funcionar.

Eu tenho um widget que eu quero permitir que outros para editar (texto, imagens, css, etc). então eu forneceu-lhes a capacidade de passar uma página externa na via uma variável url.

O problema é que eu não posso acessar os valores que eles fornecem através da página.

Eu estou tentando eval via

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

o arquivo que eu estou sendo passado contém múltiplas variáveis ??como este

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

Eu suspeito que isso deve funcionar. Eu prefiro não ter de colocar 'eco' em cada linha, porque é apenas mais para outras pessoas para estragar mais tarde.

Existe errado algo com o que eu tenho aqui? Eu não posso fazê-lo funcionar.

Foi útil?

Solução

Usando eval em arquivos enviados pelos usuários é muito perigoso. Você nunca deve permitir que qualquer outra pessoa para fazer upload de arquivos executáveis ??em qualquer lugar em sua aplicação web.

Você seria melhor para armazenar esses valores em um banco de dados e permitir que os usuários alterar os.

Edit: Este é muito mais perigoso porque as variáveis ??$_GET e $_POST só pode conter valores enquanto usando eval permite que alguém para injetar código executável . Isso pode permitir que alguém para executar código malicioso no seu servidor com facilidade.

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

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

Se este foi incluído em um arquivo que você analisado com eval, ele teria apenas apagados todos os arquivos no diretório do script foi executado a partir.

Outras dicas

Eval é mais perigoso do que GET / POST porque o conteúdo apresentado pode executar funções como 'incluir' que pode acessar qualquer apache arquivo tenha privilégios de leitura para, ou shell_exec que pode fazer qualquer coisa no desembolsar o usuário apache pode fazer, etc.

get / variáveis ??pós não têm automaticamente acesso a esta funcionalidade, que é o que os torna mais seguro.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top