保护链接中携带的变量

时间:2011-05-30 08:51:50

标签: php

在将信息从一个页面移动到另一个页面时,有没有办法保护PHP中链接中携带的变量?因此出于安全目的,护照号码不会以原始形式显示在地址栏上。

<a href=\"edit_employee.php?$employee[passport_number]\">" . $row['first_name'];> 

4 个答案:

答案 0 :(得分:2)

这个问题的简单答案是,通过在您公开的URL中放置一条“敏感”信息(对于在使用该网站时看到该URL的任何人)。有许多方法可以通过编码来隐藏URL中的数据,但它们并不真正保护数据。

唯一的选择,如果你想在URL中,左边是使用双向加密方案加密信息。这是CPU密集型的,可能不是必需的。

正如deceze和Alex Coles建议的那样,解决这个问题的一种方法是为每个员工分配一个独特的随机ID号码,然后使用这个号码从数据库中提取敏感信息,防止它被放入URL。鉴于您需要搜索(根据您的评论),此解决方案似乎是最合适的,请考虑此示例:

员工姓名:John Doe

Passport#:123456789

员工ID:2899

在编写搜索代码时,只需返回如下链接:

<a href=\"edit_employee.php?$employee[employee_id]\">" . $row['first_name'];> 

然后在edit_employee.php页面上,只需使用ID号从数据库中提取员工信息。

希望这有帮助。

答案 1 :(得分:1)

您可以将员工护照号码存储在会话中,但最好为员工使用唯一ID,而不是通过护照号码引用它们。

答案 2 :(得分:1)

使用 urlencode ()

<?php
$link = 'edit_employee.php?passport_number=' . urlencode($employee[passport_number]);
echo "<a href=\"$link\">test</a>";

- 编辑 -

如果您不希望它显示在地址栏上,请使用$ _COOKIE或$ _SESSION

    <?php
    // a.php
    setcookie('number', $employee[passport_number]);
// or $_SESSION['number'] = $employee[passport_number];


    <?php
    //b.php
    echo $_COOKIE['number'];
// or $_SESSION['number']

答案 3 :(得分:0)

从URL获取变量时,您可以在网址中指定变量的类型,例如$passport_number=(int)$_GET['passport_number'];