Question

Cela devrait être assez simple de ce que je peux trouver en ligne, mais je ne peux pas sembler le faire fonctionner.

J'ai un widget que je veux permettre aux autres de modifier (texte, images, css, etc.). donc je les ai fourni la possibilité de passer une page externe via une variable url.

Le problème est que je ne peux pas accéder alors les valeurs qu'ils fournissent via la page.

Je suis en train de eval via

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

le fichier que je suis passé en cours contient plusieurs variables comme celui-ci

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

Je me doutais bien que cela devrait fonctionner. Je préférerais ne pas avoir à mettre « écho » sur chaque ligne, car il est un peu plus pour les autres muck plus tard.

Y at-il quelque chose de mal avec ce que je suis arrivé ici? Je n'arrive pas à le faire marcher.

Était-ce utile?

La solution

Utilisation eval sur les fichiers téléchargés par les utilisateurs est très dangereux. Vous ne devriez jamais permettre à quiconque de télécharger des fichiers exécutables partout dans votre application web.

Vous seriez mieux stocker ces valeurs dans une base de données et vos utilisateurs modifient ceux-ci.

Edit: Ceci est beaucoup plus dangereux parce que les variables de $_GET et $_POST ne peuvent contenir que valeurs alors que l'utilisation eval permet à quelqu'un d'injecter code exécutable . Cela peut permettre à une personne d'exécuter du code malveillant sur votre serveur en toute simplicité.

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

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

Si cela a été inclus dans un fichier que vous avez analysé avec eval, il aurait tout simplement supprimé tous les fichiers dans le répertoire le script a été exécuté à partir.

Autres conseils

Eval est plus dangereux que get / post parce que le contenu soumis peut exécuter des fonctions comme « inclure » qui peut accéder à tout apache de fichier a lu des privilèges pour ou shell_exec qui peut faire quoi que ce soit dans le shell l'utilisateur apache peut faire, etc.

get / variables poste ne sont pas automatiquement accès à cette fonctionnalité qui est ce qui les rend plus sûr.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top