2012-07-28 50 views
5

我的網站受到攻擊者試圖訪問用戶帳戶的蠻力攻擊。機器人沒有用戶代理。如果在10分鐘內每個帳戶的嘗試次數超過3次,我的系統會阻止某人登錄。會話是否僅存儲在瀏覽器中?

我也讓它檢查用戶代理,如果沒有,退出。

我的問題是:會話是否只存儲在瀏覽器?我在想,他們正在使用通過命令行執行的腳本。

我實現了這個問題,以及:

if(!isset($_COOKIE[ini_get('session.name')])) { 
header("HTTP/1.0 404 Not Found"); 
exit; 
} 

有什麼事我可以做些什麼來防止這些攻擊?

+2

會話是服務器端存儲(通常)與使用cookie的用戶鏈接。 – nickb 2012-07-28 01:39:29

+0

Google for:會話劫持在php中 – Yang 2012-07-28 01:49:43

回答

14

會話變量的內容存儲在服務器上,但會話由會話ID標識,該會話ID存儲在客戶端並隨每個請求一起發送。通常,會話ID存儲在cookie中,但也可以附加到URL中。

在Wiki上有session hijacking有一個很有趣的閱讀,也有一個在PHP Security Consortium,這應該讓你更好地理解劫持是什麼以及如何預防它。

有很多方法來幫助阻止這些攻擊,我已經指出了三條:

  • 使用PHP的session_regenerate_id()用戶成功登錄後 這將創建一個新的會話ID,從不同的。一個是他們第一次訪問公共/安全區時創建的,當然是開始了一個會話。
  • 成功登錄時記錄用戶的IP地址,會話ID和用戶代理。檢查每個請求的IP和用戶代理,如果IP和代理不匹配此會話,請再次登錄。但要小心,有時用戶的IP可能會改變,並可能會惹惱某人。另外請注意,用戶代理也可能很容易被欺騙。
  • 使用SSL/TCL來隱藏請求中發送的信息。
相關問題