通过文件获取外部变量 - eval / include

时间:2009-03-27 19:47:52

标签: php variables external

这应该是我在网上找到的相当简单,但我似乎无法让它工作。

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

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

我正试图通过

进行评估
$fileVars=include($getFile);
eval($fileVars);

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

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

我怀疑这应该有效。 我宁愿不必在每一行上加上'echo',因为以后其他人也会更多地使用'echo'。

我在这里有什么问题吗?我无法让它发挥作用。

2 个答案:

答案 0 :(得分:3)

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

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

编辑:这更危险,因为$_GET$_POST变量只能包含,而使用eval允许有人注入可执行文件代码。这可以让某人轻松地在您的服务器上执行恶意代码。

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

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

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

答案 1 :(得分:0)

Eval比get / post更危险,因为提交的内容可以运行像'include'这样的函数,可以访问apache具有读权限的任何文件,或者shell_exec可以在apache用户可以执行的任何操作中执行任何操作,等等。

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