如何设置安全的PHP会话

如何设置安全的PHP会话,php,security,encryption,cookies,session,Php,Security,Encryption,Cookies,Session,与我前面的问题类似,我不是一个经验丰富的PHP程序员。我对会话或安全一无所知(除了一小时前我学到的关于md5和含盐的sha1) 我有一个登录系统,我希望创建一个会话,该会话存储用户用户名的加密字符串和时间戳。我知道如何创建字符串,但我对会话或会话如何工作一无所知 我花了一个小时在谷歌上搜索一个解决方案,但它们似乎都太基本或过时了,我正在寻找一个具有具体安全性,但也很简单的解决方案(由于我缺乏经验) 假设此字符串已加密,我将如何(在管理页面上)检查用户是否已登录 我知道也有类似的问题,但我需要从一

与我前面的问题类似,我不是一个经验丰富的PHP程序员。我对会话或安全一无所知(除了一小时前我学到的关于md5和含盐的sha1)

我有一个登录系统,我希望创建一个会话,该会话存储用户用户名的加密字符串和时间戳。我知道如何创建字符串,但我对会话或会话如何工作一无所知

我花了一个小时在谷歌上搜索一个解决方案,但它们似乎都太基本或过时了,我正在寻找一个具有具体安全性,但也很简单的解决方案(由于我缺乏经验)

假设此字符串已加密,我将如何(在管理页面上)检查用户是否已登录

我知道也有类似的问题,但我需要从一个完全外行的角度来回答,因为我不知道如何实施这个解决方案


感谢您提供的任何帮助

在用户登录后,将其标识符存储在会话中。在“管理”页面上,读取此会话值并使用它查询数据库,以确定用户是否具有管理员权限。如果他没有显示错误

显然,这允许变化(例如,在会话中存储一个
User
对象,该对象已经包含有关用户管理状态的信息)

$\u SESSION
中的数据不能被客户端篡改(除非您做了一些非常愚蠢的事情),因为它存储在服务器中。您不需要加密或散列任何内容

我希望创建一个会话来存储和加密他们的用户名字符串

为什么??除非您解密它,否则使用散列值甚至随机值没有任何优势。如果你要解密它,那么密钥也必须存储在你的数据中——所以它的安全性很低

假设此字符串已加密,我将如何(在管理页面上)检查用户是否已登录


在对用户名进行身份验证之前,不要将其存储在会话变量中。然后,如果填充了变量,您就知道用户已经过身份验证。

保护PHP会话的方法有很多,但必须首先了解需要什么级别的安全性,以及他/她最终实现了什么


这是Corey Ballou的一篇博文,我想这足以消除您对保护PHP会话的疑虑。

顺便说一句,您已经有一个与会话相关的随机值-会话id。哦,我想我必须手动设置会话id。因此,如果我想识别特定用户,我可以:$\u session['username]=$username;然后在另一个页面上我可以输出:echo“Hello”$_会话['username'];是这样吗?@Daniel是的,就是这样。如果用户B登录,$\u会话['username']=$username不会被覆盖,因为每个$\u会话都是根据其会话id存储的,对于每个会话开始,哪一个是唯一的?是的-否则$session不会描述会话-它会将系统描述为一个整体谢谢大家的评论和帮助,我想我现在已经弄明白了!干杯,丹