0

假设我有一个文本文件。它包含“有害”代码,例如:

<?php phpinfo(); ?>

或者它可以是其他任何东西,SQL 注入代码、html 链接等......

现在这是我的示例脚本:

$content = file_get_contents('harmfullcode.txt');

现在显然 $content 变量将存储该有害代码。

我的问题是,将此类信息存储在变量中是否安全?

例如,我知道如果我

echo $content;

那么它将是有害的。

但是,如果我不对变量做任何事情,那么变量保存任何类型的有害代码是否安全?

编辑使其更清晰:

这有什么区别?

$content = file_get_contents('harmfullcode.txt');
$safevar = removebadstuff($content);
echo $safevar;

VS

$content = removebadstuff(file_get_contents('harmfullcode.txt'));
echo $content;

第二个示例在将其分配给 $content 之前删除了坏东西...??我是 php 安全的新手,试图掌握这个概念。谢谢你。

4

4 回答 4

0

如果不会被打印或评估,那么可以将它作为任何字符串变量存储在变量中。

于 2012-10-25T06:07:54.213 回答
0

除非有害代码针对file_get_contents()PHP 本身的漏洞或类似功能,否则仅将其存储在变量中应该是安全的。输出它可能是不安全的,eval在它上面运行肯定是个坏主意。

于 2012-10-25T06:09:39.417 回答
0

这取决于你如何对待这个变量。

在您的示例中,echo $content;不会有害,它只会显示有害代码,而不执行它。

有害的例子:

eval($content);

exec($content); // any System program execution function

//preg_relace with e modifier, this is deperecated

// and so on .....
于 2012-10-25T06:10:09.647 回答
0

嘿几乎是一样的。您可能希望unset $content在第一个示例中作为第二个示例仅创建局部变量作为removebadstuff.

请记住,PHP 中的字符串是二进制安全的

必读: 终极清洁/安全功能

于 2012-10-25T06:53:46.137 回答