在將信息從一個頁面移動到另一個頁面時,是否有辦法保護PHP中鏈接中攜帶的變量?以便出於安全目的,護照號碼不會以其原始形式顯示在地址欄中。保護鏈接中攜帶的變量
<a href=\"edit_employee.php?$employee[passport_number]\">" . $row['first_name'];>
在將信息從一個頁面移動到另一個頁面時,是否有辦法保護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']
如何使用帶鏈接的cookie,使用特定條件從數據庫中搜索信息後,所有信息都將顯示爲鏈接 – Gatura 2011-05-30 09:22:00
您可以將員工的護照號碼存儲在會話,但它會更好地使用一個唯一的ID爲員工,而不是護照號碼引用它們。
當正從URL變量,你也許可以在URL中指定變量的類型,例如$passport_number=(int)$_GET['passport_number'];
對這個問題的簡單回答是,通過在URL中放置一個「敏感」信息來公開(任何在使用該網站時看到該URL的人)。有很多方法可以通過對URL中的數據進行編碼來「隱藏」這些數據,但它們並不真正保護數據。
唯一的選擇,如果你想在URL中,剩下的就是用雙向加密方案加密信息。這是CPU密集型的,可能不是必需的。
正如deceze和Alex Coles所建議的,處理這種情況的一種方法是爲每個員工分配一個唯一的隨機ID號,然後使用該號碼從數據庫中提取敏感信息,防止其被放置在網址。鑑於你需要搜索(根據您的評論)這種解決方案似乎是最合適的,考慮這個例子:
員工姓名:李四
護照#:123456789
員工ID:2899
當你寫你的搜索代碼,只返回一個像這樣的鏈接:
<a href=\"edit_employee.php?$employee[employee_id]\">" . $row['first_name'];>
那麼edit_employee.php頁面上簡單地將電子使用ID號從數據庫中獲取信息。
希望這會有所幫助。
難道你不能簡單地傳遞一個毫無意義的員工ID嗎? – deceze 2011-05-30 08:55:17