urlencoded数据上的escapeshellarg()

时间:2013-01-11 15:05:23

标签: php

我将$ data(数组)从一台服务器发送到另一台服务器,如下所示。当它到达第二个服务器时,$ data元素显然是urlencoded。在第二台服务器上,我希望使用exec()中的一些$数据。即使我传递一个哈希并确保它在另一端是有效的,我仍然希望在适当时使用escapeshellarg()。由于$ data元素已经是urlencoded,我应该如何应用escapeshellarg()?谢谢

curl_setopt($ch,CURLOPT_POSTFIELDS,flatten_GP_array($data));

function flatten_GP_array(array $var,$prefix = false)
{
    //Used for CURL routines when sending multi-dimential array
    $return = array();
    foreach($var as $idx => $value){
        if(is_scalar($value)){
            if($prefix){$return[$prefix.'['.$idx.']'] = urlencode($value);}
            else {$return[$idx] = urlencode($value);}
        }
        else {$return = array_merge($return,library::flatten_GP_array($value,$prefix ? $prefix.'['.$idx.']' : $idx));}
    }
    return $return;
}

1 个答案:

答案 0 :(得分:0)

我建议您使用只有主机和服务器知道的非常长的加密密钥来加密数据。

您可以使用John Conde的this encryption/decryption class (StackOverflow)

为简单起见,我只需序列化您的$data数组,将其加密并发送到您的服务器。

$urlData = Encryption::encrypt(serialize($data));
curl_setopt($ch,CURLOPT_POSTFIELDS,array('data' => $urlData));

在传真服务器的一侧,只需解密数据并再次反序列化

$data = unserialize(Encryption::decrypt($dataParameterFromUrl));

服务器端你知道你拥有与客户端完全相同的数据,并可以随心所欲地做任何事情。

此外,您可以使用challenge response之类的内容来验证您的主机。