可以从php获取$ argv吗?

时间:2015-12-21 17:35:11

标签: php security

问题:有没有办法从get请求伪造$argv值?

背景:

我写了一个简单的php脚本,我希望可以从命令行或通过get请求访问它。如果通过命令行使用它,我可以调用这样称为php myScript.php variableValue的脚本。它目前效果很好。但是,当从互联网拨打电话时,我也需要安全码。使用此伪代码,这些将是$_GET数组中的值。

$_GET["variableValue"]="abcde";
$_GET["securityCode"]="IjfkeLEkf738J9("`

要确定脚本的调用位置,我只需查看$argv数组的长度。如果它有多个元素,我用$ argv值来评估它。否则,我使用$_GET值进行评估。如果我使用$ argv值进行评估,我就不会检查securityCode,因此我的问题是是否可以从get请求伪造$ argv。

2 个答案:

答案 0 :(得分:2)

您可以通过检查PHP_SAPI常量或使用php_sapi_name()函数来检测是否从命令行调用脚本。例如:

if (PHP_SAPI !== 'cli') {
     $variableValue = $_GET["variableValue"];
     $securityCode = $_GET["securityCode"];
     // check the above values and deny access if they are not the right ones.
}

答案 1 :(得分:1)

不,。在较新版本的PHP上,它应该不是问题。在旧版本中,只要<data ...>关闭,GET变量就不会自动转换为全局变量。