我目前正在学习PHP,并提出了一个关于Sessions的问题。在发布这篇文章之前,我已经阅读了一些关于这个主题的信息和主题,例如this one,但其中大部分都有点老了,所以我想确保我以正确的方式处理它们。PHP - 会话安全性和可靠性
所以,这里是我的问题:假设下面的项目是真实的,
- 登录时,我使用
session_regenerate_id()
再生PHP会话ID; - 登录时,我创建与encripted代码(即结合用户的IP,浏览器,并在开始和结束一些随机的东西),会话变量
$_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%?如果不是,我可以改进/改变什么以使它们更安全?
我之所以问这个问题,是因为当用户登录时,我将一些信息保存到会话变量中以避免用查询重载数据库,所以我需要确保它们不会被破坏。
谢谢。
你只是问你是否正确处理它们?如果是这样的话,这可能更多地属于[CodeReview](https://codereview.stackexchange.com/) – GrumpyCrouton
由于存储和管理服务器端,会话变量通常可以被信任。然而,很多问题已经涵盖了SO的相同主题,所以做一些研究。 – Devon
哈希不是“encripted”值。 – deceze