我目前正在学习PHP,我想出了一个关于会话的问题。在撰写这篇文章之前,我已经阅读了一些有关这个主题的信息和主题,比如this one,但是其中大部分内容都有些陈旧,所以我想确定一下我是用正确的方式处理它们的。
因此,下面是我的问题:假设以下项为真,
session_regenerate_id()重新生成PHP会话ID;$_SESSION['check'] = hash('ripemd128', $rand1 . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT'] . $rand2)。
该值被发送到数据库,并且,在每个页面中,我都在检查数据库上的值是否与该$_SESSION['check']变量匹配;
ini_set('session.use_only_cookies', 1)启用cookie,并设置了ini_set('session.use_trans_sid', 0);$_SESSION = array(); setcookie(session_name(), '', time()-259200, '/'); session_unset(); session_destroy();
这样,并且假设将值放入会话变量得到了正确的验证,我是否可以100%地信任会话变量?如果没有,我可以改进/改变什么以使他们更安全?
我之所以问这个问题,是因为当用户登录时,我会将一些信息保存到会话变量中,以避免将数据库中的查询重载,所以我需要确保这些信息不会被破坏。
谢谢。
发布于 2017-07-26 15:55:01
整个舞蹈和歌曲的哈希(不是“野营”!)带有一些随机值的用户代理和IP是非常多余的。我也不认为在每个请求中用它来干扰数据库是有意义的。
这有什么好处,你想阻止什么?如果有的话,你想要防止会话劫持。让我们详细研究一下:
if ($_SESSION['ip'] !== $_SERVER['REMOTE_ADDR']);散列不会向该进程添加任何内容。底线:任何额外的检查和保护都是无用的。如果您正在使用HTTPS,而且仍然有人能够劫持会话,那么您基本上都是SOL。别费神。如果您没有使用HTTPS,那么现在就开始使用它--,。
https://stackoverflow.com/questions/45331576
复制相似问题