如何检查每个会话的会话是否有效?
因此,如果创建了登录/注册系统,以便当用户登录时,用户被重定向到另一个仅限会员的页面(member.php),我将登录信息存储在用户的会话中。如何检查每个会话的会话是否有效?
当用户导航到成员页面时,在允许他看到内容之前,我想确保用户名/密码是有效的,并且用户有效登录。我如何确保用户有效登录时,他/她会会员的页面,对我来说,好像使用:
if (!isset($_SESSION['username']))
{
die("You aren't allowed to access this page");
}
会的工作,但我要保证它的安全,对我来说,它只是似乎并不足够安全(因为如果有某种欺骗会话的方式,他们所要做的就是将任何类型的文本作为用户名)。
我真的不知道,所以如何检查用户是否应该访问该页面?
会话变量存储在您的服务器上,而不是存储在用户计算机上,如cookie。所以用户不能修改$_SESSION['username']
。会话劫持(其中用户获得另一个登录用户的会话ID并使用它来构成该用户)唯一必须真正谨防会话的是会话劫持
如果用户知道有效值,但可能会欺骗会话ID cookie,但不会存储在服务器上的会话数据本身。
因此,他们可能不会仅仅通过某个用户名向您发送会话数据。
如果他们有机会获得别人谁是登录的浏览器,他们可以窃取他们SESSID(这是存储在客户端),但每个IP会话可以减轻一些。
如何创建每IP会话? – Alper
@Jacob:我不知道。这是[不是这样自动](http://stackoverflow.com/questions/2296571/php-session-cookies-fail-with-users-changing-ip/2296717#2296717)。你当然可以手动完成它,通过在登录时存储会话数据中的$ _SERVER ['REMOTE_ADDR']'(或其它),并检查每个请求的一致性。 –
有没有办法打击会话劫持?如果是这样,怎么样? – Alper