与我之前的问题类似 - 我不是一个非常有经验的PHP程序员。我对Sessions或Security一无所知(其他我一小时前学过的关于md5和sha1 with salt的内容)。
我有一个登录系统,我希望创建一个会话,用于存储和加密用户名的字符串以及时间戳。我知道如何创建字符串,但我对Sessions或它们的工作原理一无所知。
我花了过去一小时谷歌搜索解决方案,但它们看起来都太基础或过时,我正在寻找具有特定安全性的东西,但也很简单(由于我的经验不足)。
我(如果管理页面上)检查用户是否已登录,假设此字符串已加密,我将如何检查?
我知道有类似的问题,但我需要从完整的外行人的角度给出答案,因为我不知道如何实施这个解决方案。
感谢您提供的任何帮助
答案 0 :(得分:2)
我希望创建一个存储和加密其用户名字符串
的会话
为什么呢?除非您正在解密它,否则使用散列甚至随机值没有任何优势。如果你正在解密它,那么密钥也必须存储在你的数据中 - 所以它只是默默无闻的安全性。
我(如果管理页面上)检查用户是否已登录,假设此字符串已加密,我将如何检查?
在经过身份验证之前,不要将用户名存储在会话变量中。然后,如果填充了变量,则表示用户已经过身份验证。
答案 1 :(得分:1)
用户登录后,在会话中存储其标识符。在管理页面上,读取此会话值并使用它来查询数据库以确定用户是否具有管理员权限。如果他没有显示错误。
显然,这允许变化(例如,在会话中存储已包含有关用户管理状态的信息的User
对象。)
$_SESSION
中的数据不能(除非你做一些非常愚蠢的事情)被客户端篡改,因为它存储在服务器中。您不需要加密或散列任何内容。
答案 2 :(得分:1)
有一些方法可以保护PHP会话,但必须先了解需要什么级别的安全性以及他/她最终取得的成就。
以下是Corey Ballou发表的一篇博文http://www.jqueryin.com/2009/11/20/php-secure-sessions/,我认为这篇文章非常适合清除您对保证PHP会话的疑虑。