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'的值添加到哈希中。谢谢! –