【发布时间】:2022-01-24 18:42:09
【问题描述】:
所以我想做的如下
会有一个外部配置文件包含
RunCommand = "SomePHPCommand($SomeVariable)"
但是配置文件
$SomeVariable = GetFromWebCall(); //Obtained Externally, needs to be made safe
$PHPCommand = LoadFromConfig(RunCommand) //Obtained externally but safe controlled environment. No clean necessary
result = eval($PHPCommand)
简而言之,配置文件是安全的。但 $SomeVariable 可能包含恶意内容,我需要为此做好计划。
如何在运行我的 eval 命令之前安全地退出 $SomeVariable?
【问题讨论】:
-
eval通常可以用更安全的东西代替。为什么必须从外部获取命令是否有特殊原因?难道你不能从外部获得一个可以“映射”到特定命令的关键字吗?你期待什么样的命令? -
没有清除变量的通用方法。没有办法分辨什么是恶意的,什么不是。
-
在您的情况下什么是“安全”?
-
如果你想要安全,你想要一个允许的白名单。如果您可以填写一些关于您期望
GetFromWebCall提供哪些类型的用户输入的信息,我们可能会对如何安全地实施它有一些想法。
标签: php security code-injection