我想使用PHP $_GET[''];
将一些变量传递给网址,例如:
我在登录页面上有一个表单,其中包含五个输入字段:名称,姓氏,电子邮件,确认电子邮件,电话我现在选择这些变量我想将这些变量添加到基本URL,以便它们可以被选中另一个网页。
我的问题是这是多么安全以及保护这些变量的最佳方法是什么,或者可能在新网址下隐藏这些变量...?
我可以使用php curl()
或sockets
,但我想要发送数据的服务器不允许我这样,这就是为什么我要use $_GET['']'
答案 0 :(得分:1)
如果您想使数据安全,则不应使用$_GET
。
没有选项可以使$_GET
安全或不可见。
如果您不想让数据可见且安全,则应使用$_POST
将数据发送到其他网址。
使用post方法时,即使您的数据也不会被浏览器存储,也很难破解。
答案 1 :(得分:0)
这是不安全的,因为任何人都可以编辑URI参数。 “保护”这些的最佳方法是在发送时加密它们(这意味着接收者必须能够解密它们)并结合校验和以确保没有任何参数被改变。另一种保护类型不是使用HTTP,而是使用HTTPS代替。
答案 2 :(得分:0)
如果您不使用HTTPS,则GET
和POST
都不安全。
因此,如果您必须使用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