2013-10-03 145 views
2

我已閱讀了很多關於保護會話的教程。 Allot公司的人都在談論使用此:保護會話登錄

$_SERVER['REMOTE_ADDR'] 

但我不想因爲有人使用代理服務器來使用它。 我有一個問題關於

$_SERVER['HTTP_USER_AGENT'] 

我讀的人有這個問題,在IE瀏覽器,所以我不知道我是否應該用這個。 如果我只是這樣做,這還不夠嗎?

$ID = $user['ID']; 
$Salt = mcrypt_create_iv(32, MCRYPT_DEV_RANDOM); 
$_SESSION['ID'] = hash('sha256', $ID . $Salt); 

我會存放鹽在數據庫中,當用戶註銷或沒有10分鐘做任何刪除。 然後在每一頁我會運行一個函數,檢查用戶是否使用正確的ID。 這會好嗎還是你推薦別的?

回答

3

您不能依賴任何發送的HTTP標頭。

瀏覽器可能發送HTTP_USER_AGENT中的任何內容。
REMOTE_ADDR會給你(可靠的)來自發件人的IP地址(儘管這可能是一個代理)。

我想說你的方法應該足夠強大的正常情況下(這將是很難猜測一個正確的會話ID)。

+0

謝謝,但我可以做的任何其他事情來改善它?因爲我真的不希望任何人破解會話ID。 – Szenis

+0

@Szenis您可以通過HTTPS協議來訪問您的網站。 – MonkeyZeus

+0

@Szenis當然你可以保存用戶代理。我只是說這個數據不可靠,但是一個潛在的黑客也必須猜測發送的用戶代理。 – ComFreek