问题描述
|
当将信息从一页移动到另一页时,是否有一种方法可以保护PHP链接中携带的变量?为了安全起见,因此护照号码不会以其原始形式显示在地址栏上。
<a href=\\\"edit_employee.PHP?$employee[passport_number]\\\">\" . $row[\'first_name\'];>
解决方法
使用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\']
, 这个问题的简单答案是,没有将您敏感的信息放在您公开的URL中(公开给使用该网站时看到该URL的任何人)。有很多方法可以通过对URL中的数据进行“隐藏”来对其进行“编码”,但是它们并不能真正保护数据。
如果要在URL中输入,唯一的选择就是使用双向加密方案对信息进行加密。这是CPU密集型的,可能不是必需的。
正如deceze和Alex Coles所建议的那样,处理此问题的一种方法是为每个员工分配一个唯一的随机ID号,然后使用该号码从数据库中提取敏感信息,以防止将其放置在URL中。鉴于您需要搜索(根据您的评论),此解决方案似乎是最合适的,请考虑以下示例:
员工姓名:John Doe
护照编号:123456789
员工编号:2899
在编写搜索代码时,只需返回如下链接:
<a href=\\\"edit_employee.php?$employee[employee_id]\\\">\" . $row[\'first_name\'];>
然后只需在edit_employee.php页面上使用ID号从数据库中提取员工信息。
希望这可以帮助。
, 您可以在会话中存储员工护照号码,但是最好为员工使用唯一的ID,而不是通过护照号码引用他们。
, 从URL获取变量时,您可以在URL中指定变量的类型,例如“ 4”