2013-10-03 39 views
2

我已阅读了很多关于保护会话的教程。 Allot公司的人都在谈论使用此:保护会话登录

$_SERVER['REMOTE_ADDR'] 

但我不想因为有人使用代理服务器来使用它。 我有一个问题关于

$_SERVER['HTTP_USER_AGENT'] 

我读的人有这个问题,在IE浏览器,所以我不知道我是否应该用这个。 如果我只是这样做,这还不够吗?

$ID = $user['ID']; 
$Salt = mcrypt_create_iv(32, MCRYPT_DEV_RANDOM); 
$_SESSION['ID'] = hash('sha256', $ID . $Salt); 

我会存放盐在数据库中,当用户注销或没有10分钟做任何删除。 然后在每一页我会运行一个函数,检查用户是否使用正确的ID。 这会好吗还是你推荐别的?

回答

3

您不能依赖任何发送的HTTP标头。

浏览器可能发送HTTP_USER_AGENT中的任何内容。
REMOTE_ADDR会给你(可靠的)来自发件人的IP地址(尽管这可能是一个代理)。

我想说你的方法应该足够强大的正常情况下(这将是很难猜测一个正确的会话ID)。

+0

谢谢,但我可以做的任何其他事情来改善它?因为我真的不希望任何人破解会话ID。 – Szenis

+0

@Szenis您可以通过HTTPS协议来访问您的网站。 – MonkeyZeus

+0

@Szenis当然你可以保存用户代理。我只是说这个数据不可靠,但是一个潜在的黑客也必须猜测发送的用户代理。 – ComFreek