2011-05-27 97 views
3

我在view.php中有以下代碼,我想將這些信息帶到edit.php中,而不會影響安全性或顯示變量中包含的內容。 edit.php有一個表單來編輯數據庫中的信息。將mysql信息從一個頁面移動到另一個頁面

while ($row = mysql_fetch_assoc($result)) 
    { 
     echo "<a href=\"edit_employee.php?$row[employee_id_passport]\">" . $row['first_name'] ." " . $row['surname'] . "</a>"; 

     echo "<br />"; 
    } 
+0

包括編輯 – Ibu 2011-05-27 08:32:43

回答

0

你應該只允許登錄的用戶查看或編輯的信息,你也可能會得到與SQL注入:

$first_name = $_POST['first_name']; 
$sql_query = "SELECT * FROM employee_master WHERE first_name = '$first_name'"; 
$result = mysql_query($sql_query, $connection); 

您應該改爲:

$first_name = mysql_real_escape_string($_POST['first_name']); 
$sql_query = "SELECT * FROM employee_master WHERE first_name = '$first_name'"; 
$result = mysql_query($sql_query, $connection); 
+0

這個文件不是一個答案的。應該添加它作爲評論。 – RRStoyanov 2011-05-27 08:35:49

+0

具體問題是什麼?這是對「爲了安全完成任務我應該注意什麼?」的答案。 – 2011-05-27 08:37:15

+0

@RRStoyanov OP想要使其安全,但不知道基本知識 - 顯示他/她已經損害了安全性是一個不錯的選擇。 – Tadeck 2011-05-27 08:45:26

0

的最好的辦法是(假設你不能做任何事情,除了使用標準的錨鏈接來傳遞變量)在表中有你的每個記錄的ID爲md5。所以你可以這樣做

while($row = mysql_fetch_assoc($res)) 
{ 
echo "<a href=\"edit_employee.php?chksum=$row['md5']\">" . $row['first_name'] ." $row['surname'] . "</a>"; 
} 

現在在edit.php檢索這個並且把它與散列進行比較。

更安全的方法是將記錄的id與另一個唯一數據(如連接日期或dob)連接起來,並對整個字符串進行散列處理。這種方式非常安全。

0

選項1:只需通過鏈接從數據庫中獲取id即可。如果用戶知道該ID,但不知道任何其他信息,則對其無用。使用別的東西只會帶來更多的代碼行。

選項2:設置用戶在SESSION

3

您在安全性已危及ID - 請參閱SQL注入和轉義字符串。

另外,通過要求(請參見require_once()require()函數)文件來包含應用程序的其他模塊是很常見的做法。它本身不是一個安全漏洞,但確實將所有全局變量,函數和類包含到該腳本中。

如果您真的需要這樣做,您可以取消設置所有變量(請參閱unset()),但只保留要傳遞的數據。

瞭解如何編寫清潔且安全的代碼,並且它會很安全。將一個PHP文件包含到另一箇中並不是不安全的做法。

編輯:

有些開始可能是創建類的私人或受保護的屬性和公共方法,然後用它們來存儲敏感信息,並執行一些動作。通過使用encapsulation你可能會達到你所需要的。

0
$first_name = mysql_real_escape_string($_POST['first_name']); 

session_start(); 
$_SESSION['loggedin'] = true; 
$_SESSION['first_name'] = $first_name; 

然後,將來自數據庫的其他值設置爲會話變量,例如,用戶的姓氏:

$_SESSION['surname'] = $row['surname']; 

然後從任何其他頁面,您可以做

if ($_SESSION['loggedin'] == true) { 
    echo "Welcome $_SESSION['first_name'] $_SESSION['surname']!"; 
} 
相關問題