【发布时间】:2014-08-05 20:40:46
【问题描述】:
我目前正在开发基于 PHP 浏览器的游戏。我已经完成了大部分脚本,但我担心有人会轻易“破解”会话。
当用户登录且密码正确时,$_SESSION['logged'] 将变为“1”。用户将被重定向到 profile.php 。
如果$_SESSION['logged'] 等于“1”,则将显示配置文件。但是,如果$_SESSION['logged'] 不存在,用户将被重定向回 index.php。
恐怕用户将能够破解$_SESSION['logged']。
另外,还有$_SESSION['username']。大多数时候我使用$_SESSION['username'] 从数据库中获取信息。如果$_SESSION['username'] 被更改/被黑客入侵,“黑客”将能够“成为”另一个“人”。
我听说过 session_regenerate_id 和 session_id() 。但是,我不确定将它们放在哪里。
谢谢,
【问题讨论】:
-
播放器或客户端无法更改
$_SESSION的值。 -
你不应该存储
$_SESSION['logged'];您可以改用基于令牌的身份验证。 -
@Raptor 我用这种方式来了解用户是否是管理员,其他最好的方式是什么?
-
@scrowler 在大多数情况下不是通过 cookie 建立和维护会话(不通过每个 POST/GET 发送会话 id)吗?会话可能会被中间人入侵,但对于大多数人的需求来说,它们“足够安全”。
-
您应该将“是否管理”设置存储在数据库中。