2

我已经阅读了很多关于保护会话的教程。很多人都在谈论使用这个:

$_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。这会很好还是你推荐别的东西?

4

1 回答 1

3

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

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

我想说您的方法对于正常情况应该足够强大(很难猜出正确的会话 ID)。

于 2013-10-03T17:11:20.003 回答