如何以安全的方式传递带有url的查询字符串变量(如id、name等)


How to pass query string variable (like id, name, etc..) with url in safe way?

我只想传递一些URL如下的查询字符串变量。但通过这种方式,任何人都可以看到传递的变量。我可以使用base64_encode()base64_decode()方法,但这些方法也不安全。因为任何人都可以逆转。如果有人有最好的解决方案,请帮助我。

 header('Location: http://www.example.com?id='.$id);
 or 
 header('Location: http://www.example.com?name='.$name);

我认为这是最好且安全的解决方案。。

<?php
/*
 * PHP mcrypt - Basic encryption and decryption of a string
 */
$string = "Some text to be encrypted";
$secret_key = "This is my secret key";
// Create the initialization vector for added security.
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND);
// Encrypt $string
$encrypted_string = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $secret_key, $string, MCRYPT_MODE_CBC, $iv);
// Decrypt $string
$decrypted_string = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $secret_key, $encrypted_string, MCRYPT_MODE_CBC, $iv);
echo "Original string : " . $string . "<br />'n";
echo "Encrypted string : " . $encrypted_string . "<br />'n";
echo "Decrypted string : " . $decrypted_string . "<br />'n";
?>

输出如下:

Original string : Some text to be encrypted
Encrypted string : –LÁ`b]!üƒN{Iç&|«kÿÅLèëÉ°Xp
Decrypted string : Some text to be encrypted