這是我當前的會話管理:使用只有第3個部分IP地址的會話管理和安全
if(!isset($_SESSION["user"]["authenticated"]) ||
!$_SESSION["user"]["authenticated"])
redirect("login.php");
if($_SESSION["user"]["browserHash"] != md5($_SERVER["HTTP_USER_AGENT"]))
redirect("logout.php?err=browser_mismatch");
if($_SESSION["user"]["IPHash"] != md5($_SERVER["REMOTE_ADDR"]))
redirect("logout.php?err=ip_mismatch");
if(!isset($_SESSION["user"]["nonce"]) ||
$_SESSION["user"]["nonce"] == $_COOKIE["SITE_nonce"])
{
$nonce = md5(mt_rand() . time() . $_SERVER["REMOTE_ADDR"]);
$_SESSION["user"]["nonce"] = $nonce;
setcookie("SITE_nonce", $nonce, (60 * 15), "/path");
}
else
redirect("logout.php?err=nonce_mismatch");
我知道改變IP問題的計劃。但我擔心的是攻擊者能夠嗅探標題等。那麼我不會受到保護吧?如果我是受害者網絡中的攻擊者,我只需在嗅探一個響應標頭後立即發出一個快速GET請求,然後我將得到重新生成的隨機數。有沒有真正的方法來防止這種情況?
如果不會太多,我也希望能夠洞悉我的方法。這怎麼能被規避?我錯過了什麼大事?
如果您使用的是SSL,那麼您已脫身。如果沒有,總有辦法來嗅探登錄憑據,會話cookie或正常的cookie並使用它們僞造身份。你可以做的是在數據庫中存儲儘可能多的信息,並在每次請求完成時檢查它們。這可能包括瀏覽器,操作系統等。由於cookie與通常安裝在一臺PC上的瀏覽器綁定,因此您會識別更改並可能作出相應的反應。 – Sgoettschkes