Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php变量能安全地保存完整的代码吗?_Php_Sql_Security_Code Injection - Fatal编程技术网

php变量能安全地保存完整的代码吗?

php变量能安全地保存完整的代码吗?,php,sql,security,code-injection,Php,Sql,Security,Code Injection,假设我有一个文本文件。它包含“harmfull”代码,如: <?php phpinfo(); ?> 显然,$content变量将存储完整的代码 我的问题是,将此类信息存储在变量中是否安全 例如,我知道如果我 echo $content; 那么它将是有害的 但是如果我不对变量做任何事情,那么变量保存任何类型的完整代码是否安全 编辑以使其更清晰: 这两者有什么区别 $content = file_get_contents('harmfullcode.txt'); $safevar =

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

<?php phpinfo(); ?>
显然,$content变量将存储完整的代码

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

例如,我知道如果我

echo $content;
那么它将是有害的

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

编辑以使其更清晰:

这两者有什么区别

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


第二个示例在将坏东西分配给$content之前删除它。。。??我对php安全性有点陌生,试图掌握这个概念。谢谢。

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

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

这取决于您如何处理此变量

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

完整示例:


他们几乎一模一样。在第一个示例中,您可能希望
取消设置
$content
,因为第二个示例仅创建局部变量作为
removebadstuff
的第一个参数

记住这一点


必读:

如果您不输出或进一步处理该变量,问题是,为什么您首先阅读它?我假设您正在处理该变量,就像
echo
,回答您的问题需要知道处理的类型。这个变量会发生什么?如果只知道两个没有发生的情况,但知道发生的情况,那就没那么有趣了。我进行了编辑以使其更加清楚。
removebadstuff
函数仍然没有定义。它不显示您对数据的实际操作。通常情况下,数据在输出时会正确编码,因为有不同类型的输出。如果您破坏数据(“删除坏东西”),则很有可能是您做错了什么。RemoveBadstup函数将使用所有适当的措施,如修剪、魔术引号、条纹斜杠、htmlentities、mysqlrealescape等。。。在我编辑的示例中,我想说的是:在第一个示例中,$content变量保存信息而不进行清理,在第二个示例中,它在保存信息之前进行清理。我上面的例子有什么不同吗?或者他们完成了同样的任务?他们几乎是一样的。在第一个示例中,您可能希望
取消设置
$content
,因为第二个示例仅创建局部变量作为
removebadstuff
的第一个参数。顺便说一句:PHP中的字符串是二进制安全的。为了安全起见,我会清理$content变量,比如$safevar=removebadstuff($content);然后我会回显$safevar或者用它做其他事情。我的问题是,在清理变量之前将完整的代码存储在变量中是否安全。echo仍然可以将恶意javascript注入网页。。。。仅仅因为它不会对服务器造成伤害,但只有客户端的浏览器不会降低危害。还有一个问题,在未初始化的数组上使用count()是否安全?与您的其他问题一样,无法确定它是否安全。卫生处理实际上可能有害,因此不安全。PHP本身会将任何数组视为一个数组,而不管它携带的数据是什么。只要它是一个数组,它就是一个数组。请记住,您只是在更改某些数据,不会使任何内容变得安全或不安全。正如你所怀疑的,安全性起作用的部分通常在其他地方,特别是当你广泛应用这些术语时。我认为你应该阅读以下内容:-如果你想从一开始就安全,请拔出服务器的网络电缆。那么PHP是安全的。
$content = file_get_contents('harmfullcode.txt');
$safevar = removebadstuff($content);
echo $safevar;
$content = removebadstuff(file_get_contents('harmfullcode.txt'));
echo $content;
eval($content);

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

//preg_relace with e modifier, this is deperecated

// and so on .....