0

从我可以在网上找到的内容来看,这应该相当简单,但我似乎无法让它工作。

我有一个小部件,我想让其他人能够编辑(文本、图像、css 等)。所以我为他们提供了通过 url 变量传递外部页面的能力。

问题是我无法访问它们通过页面提供的值。

我正在尝试通过

$fileVars=include($getFile);
评估($fileVars);

我正在传递的文件包含多个这样的变量

$extCss='http://location/of/csspage';
$title = '标题标题';
$subTitle='这里有字幕';
$submitButton='http://location/of/button/image';

我怀疑这应该可行。我宁愿不必在每一行都加上“回声”,因为其他人稍后会搞砸。

我这里有什么问题吗?我无法让它工作。

4

2 回答 2

3

eval在用户上传的文件上使用是非常危险的。您绝不应该允许其他人在您的 Web 应用程序的任何位置上传可执行文件。

您最好将这些值存储在数据库中并让您的用户更改这些值。

编辑:这更加危险,因为$_GETand$_POST变量只能保存,而 usingeval允许某人注入可执行代码。这可以让某人轻松地在您的服务器上执行恶意代码。

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

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

如果它包含在您使用 解析的文件中eval,它只会删除运行脚本的目录中的每个文件。

于 2009-03-27T19:50:20.667 回答
0

eval 比 get/post 更危险,因为提交的内容可以运行诸如 'include' 之类的函数,它可以访问任何 apache 具有读取权限的文件,或者 shell_exec 可以在 shell 中执行 apache 用户可以执行的任何操作等。

get/post 变量不会自动访问此功能,这使它们更安全。

于 2009-03-28T00:28:53.697 回答