2
我對Web開發非常陌生,並且閱讀了有關CSRF,XSS和會話劫持的內容。一個建議的解決方案是簡單地使用nonce
來檢查請求的有效性。我在PHP中編寫了這個腳本來防止會話劫持。我認爲它重新生成會話ID的意義相似,因爲標識符或它們的組合(會話ID和隨機數)在每個請求時都會更改。實施會話劫持預防,正確
if(!isset($_SESSION["user"]["nonce"]) ||
$_SESSION["user"]["nonce"] == $_COOKIE["SITE_nonce"])
{
$nonce = md5(uniqid());
$_SESSION["user"]["nonce"] = $nonce
setcookie("SITE_nonce", $nonce, 0, "/path");
}
else
die("Invalid Request");
這夠了嗎?我真的不知道我能否買得起SSL,而且我知道這對於會話劫機者來說是一個很好的解決方案,但我希望對這種方法有所瞭解。我錯過了什麼嗎?
感謝您的鏈接。我開始瀏覽一些頁面,並且看到我的實現符合Page Tokens!如果它太多了,我真的不明白你在第二段有關散列的含義(我得到了關於cookie的部分,但不是前者)。 –
@Rolando Cruz我所做的是md5(IP,用戶名和密碼傳遞階段),並將其存儲在特定用戶的「散列」字段下。所以當有人回來(用cookie)時,我會比較這些哈希值,如果不匹配。然後我登錄它,將它們踢出去,並可能讓它們停留幾分鐘。 – Luke
啊。我懂了。我以爲你是第一次訪問該網站。在這種情況下,我想我也會將'HTTP_USER_AGENT'的值添加到哈希中。謝謝! –