2012-12-13 178 views
1

好吧,我得到了代碼的代碼拉基於一個用戶的數據帳號PHP搜索數據庫

好這裏是使用IM(是的,我知道它不是安全的,現在是我的職位的原因)

<?php 

include('config.php'); 

$user_info = fetch_user_info($_GET['AccountNumber']); 

?> 
<html> 
<body> 
<div> 
<?php 
if ($user_info === false){ 
$Output = 'http://www.MyDomain.Com/'; 
echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL='.$Output.'">'; 
}else{ 
?> 
<center> 
<title><?php echo $user_info['FirstName'], ' ', $user_info['LastName'], ' - ',  $user_info['City'], ', ', $user_info['State']; ?> - Name of site</title> 

所以基本上這個代碼是讓我做的是有一個叫Profile.php文件,當用戶訪問這個網頁時,返回的數據。

像這樣http://MyDomain.com/Profile.php?AccountNumber=50b9c965b7c3b

我怎樣才能做到這一點,現在它使用get方法真的不安全檢索網址欄中的賬號安全造成。

回答

0

你是否來自另一個應該POST數據而不是GET的頁面?

從GET獲取信息並不是非常危險。你只需要確保你與mysql_real_escape_string()逃避價值,所以是這樣的:

$user_info = fetch_user_info(mysql_real_escape_string($_GET['AccountNumber'])); 

這將保護您免受SQL注入攻擊。更好的辦法是使用準備好的陳述和PDO

我們無法確切知道您正在運行哪些查詢或查詢,因爲所有這些邏輯都隱藏在fetch_user_info之後,您並未將其包含在源代碼中。如果您包含該代碼,我們可以幫助確保它更可能。

+0

我不認爲它的安全風險,但確保isset($ _ GET ['AccountNumber'])也可能是一個好主意。 – Supericy

+0

的確,這只是良好的編碼習慣。 – samanime

0

如果您只想顯示當前的用戶配置文件,您應該在用戶登錄時在會話中存儲用戶標識或帳戶編號。然後在您的配置文件頁面上從會話中檢索帳戶編號並顯示詳細信息。如果沒有活動會話,則可以將用戶重定向到登錄頁面。

+0

是的,就像ifunk說的那樣,如果用戶可以選擇登錄,你可以將賬號存儲在會話中,否則你可以給用戶一個用戶名以查看詳細信息。 – Dev