2013-04-08 44 views
-1

如何通过url保证您的传递变量在两个页面之间?假设我在一个页面中有一个TEST变量,我想在安全方法中将该变量传递给test2.php页面?我如何确保在URL中传递变量

如何将test variable转换为Hash Method并通过url传递test2.php页面?

例如

$test=$_POST['test']; 
echo $row['test']; 

<a href="test2.php?test=$test">Test</a> 

OR 

<a href="test2.php?test=$row['test']">Test</a> 

测试2页

$test=$_REQUEST['test']; 
+1

该方法取决于变量的性质。你想“保护”哪些变量? – 2013-04-08 08:53:56

+0

您可以使用ecryption/decryption函数对字符串进行编码,同时在其他页面上接收字符串时对其进行解码。最简单的是'base64_ecode/base64_decode',但它不安全。 – asprin 2013-04-08 08:54:08

+0

使用会话变量和加密和解密方法 – user1370510 2013-04-08 08:56:18

回答

1

它并不安全可言,因为网址(包括GET参数)通常存储在日志中的httpd。因此,请使用POST进行传输,使用SSL进行传输。如果你需要使用GET,你可以尝试在GET对数据进行加密,但记住,某些Web浏览器得到了所使用的URL的最大长度的限制,所以过多的数据可能会让他们感到困惑

1

安全散列函数是单向的,所以传递价值没有好处。最安全的方法是使用SSL,并发布变量,以便它们不会显示在查询字符串/地址栏中。

1

答案很简单。

  • 要么你需要一个变量中的URL识别特定的页面,它的内容
  • 或它的内部站点变量,如授权信息 - 它必须通过会话传递。

对于第一种情况,你不应该“安全”这个变量在所有。

3

通过安全的,如果你的意思是你想要的变量是可见的,但要防止用户更改变量,你可以简单地传递一个哈希值与变量一起。

I.e.

$variable = 'abc'; 
$salt = 'your secret key'; 
$hash = md5($salt.$variable); 

<a href="page2.php?variable=$variable&hash=$hash">Page 2</a> 

On the second page you can rehash to see if the value has changed or not. 

$variable = $_REQUEST['variable']; 
$salt = 'your secret key'; 
$hash = md5($salt.$variable); 

if($hash == $_REQUEST['hash']){ 
    //do staff 
} 

但是这不会隐藏来自URL的变量,您可以使用其他建议的答案。

+1

@YourCommonSense在你看来,这可能是一个无用的东西,但在我看来,这是一种替代的做事方法..它可能在一些方便除了在答案中提到的所有准备工作,它应该被使用,而不是在哪里。 – 2013-04-08 09:17:13

+2

@YourCommonSense“如果你已经在第二页上有你的变量”这是你相信的东西吗?因为这个问题没有提到。 – 2013-04-08 09:18:17