これは私の現在のセッション管理です:
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アドレスの最初の3つの部分のみを使用する計画でIPの問題を変更することを認識しています。しかし、私が懸念しているのは、攻撃者がヘッダーなどを盗聴できることです。じゃあ守られないよね?私が被害者のネットワーク内の攻撃者である場合、1 つの応答ヘッダーを盗聴した後、簡単な GET 要求を行うだけで、再生成されたノンスを取得できます。これを防ぐ方法は本当にありますか?
多すぎなければ、自分のアプローチについて洞察を得たいと思っていました。これはどのように回避できますか?私は何か大きなものを見逃していますか?