传递和保护$ _GET []变量从一个服务器到另一个服务器

时间:2014-12-01 09:33:39

标签: php

我想使用PHP $_GET[''];将一些变量传递给网址,例如:

我在登录页面上有一个表单,其中包含五个输入字段:名称,姓氏,电子邮件,确认电子邮件,电话我现在选择这些变量我想将这些变量添加到基本URL,以便它们可以被选中另一个网页。

我的问题是这是多么安全以及保护这些变量的最佳方法是什么,或者可能在新网址下隐藏这些变量...?

我可以使用php curl()sockets,但我想要发送数据的服务器不允许我这样,这就是为什么我要use $_GET['']'

4 个答案:

答案 0 :(得分:1)

如果您想使数据安全,则不应使用$_GET

没有选项可以使$_GET安全或不可见。

如果您不想让数据可见且安全,则应使用$_POST将数据发送到其他网址。

使用post方法时,即使您的数据也不会被浏览器存储,也很难破解。

答案 1 :(得分:0)

这是不安全的,因为任何人都可以编辑URI参数。 “保护”这些的最佳方法是在发送时加密它们(这意味着接收者必须能够解密它们)并结合校验和以确保没有任何参数被改变。另一种保护类型不是使用HTTP,而是使用HTTPS代替。

答案 2 :(得分:0)

如果您不使用HTTPS,则GETPOST都不安全。

因此,如果您必须使用GET提交表单,则会建议验证令牌。与OAuth一样,服务器将通过GET返回数据,但有一个access_token来保护数据。

答案 3 :(得分:0)

首先对变量进行编码,然后在另一台服务器上对其进行解码。这样,没有人能够轻易地将其还原。请务必将var $skey = "SecretKey0001";更改为其他内容。

<?php 
class Encryption {
    var $skey   = "SecretKey0001"; // you can change it

    public  function safe_b64encode($string) {

        $data = base64_encode($string);
        $data = str_replace(array('+','/','='),array('-','_',''),$data);
        return $data;
    }

    public function safe_b64decode($string) {
        $data = str_replace(array('-','_'),array('+','/'),$string);
        $mod4 = strlen($data) % 4;
        if ($mod4) {
            $data .= substr('====', $mod4);
        }
        return base64_decode($data);
    }

    public  function encode($value){ 

        if(!$value){return false;}
        $text = $value;
        $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
        $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
        $crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $this->skey, $text, MCRYPT_MODE_ECB, $iv);
        return trim($this->safe_b64encode($crypttext)); 
    }

    public function decode($value){

        if(!$value){return false;}
        $crypttext = $this->safe_b64decode($value); 
        $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
        $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
        $decrypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $this->skey, $crypttext, MCRYPT_MODE_ECB, $iv);
        return trim($decrypttext);
    }
}

$data_array['Name'] = 'Name';
$data_array['Surname'] = 'Surname';
$data_array['Email'] = 'Email';
$data_array['Confirm-Email'] = 'Confirm-Email';
$data_array['Phone'] = 'Phone';

$data_json = json_encode($data_array);

$encrypt = new Encryption;
$encoded_vars = $encrypt->encode($data_json);
$BASE_URL = 'http://example.com?data=' . $encoded_vars;
echo $BASE_URL;

echo "<br>";

// reverse
$decrypt = new Encryption;
echo $decoded_vars = $decrypt->decode($encoded_vars);
echo "<br>";
$data = json_decode(urldecode($decoded_vars), true);
echo "<br>";
print_r($data);

?>

DEMO:http://sandbox.onlinephpfunctions.com/code/ef1acdcad0272d5d99e21b07183a479f564ac64c