关于会话安全的快速问题

时间:2010-03-30 00:09:25

标签: php security session

嘿伙计们,我正在扫描我的网站以确保安全,我注意到非用户可能会发送请求和发布信息,因此我决定对所有信息帖子进行登录检查。我想知道在每个用户的会话变量md5(uniqid());中保留由$_SESSION['id']=md5(uniqid());创建的会话ID是否是一种好方法,然后将其存储在该用户的活动用户下的数据库中。然后当用户尝试插入信息时,验证他们的$ _SESSION ['id']变量是否等于数据库中用户名等于$ _SESSION ['username']的变量。你对这些家伙有什么看法?提前谢谢!

3 个答案:

答案 0 :(得分:1)

一种解决方案是在用户登录时设置一个名为“loggedin”的会话变量,并确保在进行数据库更新时设置变量(在执行SQL调用之前调用session_start(),并检查发送查询之前$ _SESSION中的变量)。这样,未登录的用户无法更新数据库,除非他们从已登录的用户窃取会话。从我对问题的理解,这听起来像是最简单的解决方案。

在我看来,您提出的解决方案已经内置到使用SESSIONID的PHP会话中。 PHP中的新会话会自动生成一个随机字符串,用于标识其他会话中的会话。不过,我可能会误解。

答案 1 :(得分:1)

为什么不检查是否设置了$ _SESSION ['username']?

答案 2 :(得分:0)

我之前在网站上做过这个,但它不是一个安全措施,而是一个允许用户拥有多个并发会话的功能。真正的关键是每当您执行需要授权的操作时检查有效的登录令牌,并通过HTTPS运行您的站点,以便不会劫持会话cookie。