0

我将 $data (array) 从一台服务器发送到另一台服务器,如下所示。当它到达第二个服务器时,$data 元素显然是 urlencoded。在第二台服务器上,我希望在 exec() 中使用一些 $data。即使我传递了一个哈希并确保它在另一端有效,我仍然希望在适当的时候使用 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;
}
4

1 回答 1

0

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

您可以使用John Conde 的这个加密/解密类 (StackOverflow)

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

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

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

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

您知道的服务器端拥有与客户端上完全相同的数据,并且可以用它做任何您想做的事情。

此外,您可以使用质询响应之类的方法来验证您的主机。

于 2013-01-11T16:15:02.220 回答