我如何保护网址中的传递变量

时间:2013-04-08 08:52:15

标签: php url variables hash

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

如何将test variable转换为Hash Method并通过网址传递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>

test2页面

$test=$_REQUEST['test'];

5 个答案:

答案 0 :(得分:3)

如果您希望变量可见但想要阻止用户更改变量,那么您可以简单地将哈希与变量一起传递。

$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 :(得分:1)

它根本不安全,因为URL(包括GET参数)通常存储在httpd日志中。因此,请使用POST,使用SSL进行传输。如果您需要使用GET,您可以尝试加密您的数据,但请注意,某些Web浏览器限制了所使用的URL的最大长度,因此GET中的太多数据可能会使它们混淆

答案 2 :(得分:1)

安全散列函数是一种方式,因此传递值没有用。最安全的方法是使用SSL,并对变量进行POST,这样它们就不会显示在查询字符串/地址栏中。

答案 3 :(得分:1)

使用SSL(针对加密流量 - 请参阅here)和POST(请参阅here)。

答案 4 :(得分:1)

答案很简单。

  • 您需要在网址中使用该变量来标识特定网页及其内容
  • 或它的内部网站变量,如授权信息 - 必须通过会话传递。

对于第一种情况,你根本不应该“保护”这个变量。