Php 如何检查每页会话是否有效?

Php 如何检查每页会话是否有效?,php,Php,因此,如果创建了一个登录/注册系统,当用户登录时,用户被重定向到另一个仅限成员的页面(member.php),我会将登录信息存储在用户的会话中 当用户导航到members页面时,在允许他查看内容之前,我希望确保用户名/密码有效,并且用户已有效登录。我如何确保用户在进入会员页面时有效登录,在我看来,这就像使用: if (!isset($_SESSION['username'])) { die("You aren't allowed to access this page"); } 可以,

因此,如果创建了一个登录/注册系统,当用户登录时,用户被重定向到另一个仅限成员的页面(member.php),我会将登录信息存储在用户的会话中

当用户导航到members页面时,在允许他查看内容之前,我希望确保用户名/密码有效,并且用户已有效登录。我如何确保用户在进入会员页面时有效登录,在我看来,这就像使用:

if (!isset($_SESSION['username']))
{
    die("You aren't allowed to access this page");
}
可以,但是我想确保它的安全性,对我来说,它似乎不够安全(因为如果有某种方式欺骗会话,他们所要做的就是将任何类型的文本作为用户名)


我真的不知道,那么我如何检查用户是否应该访问该页面呢?

如果用户知道有效值,但不知道存储在服务器上的会话数据本身,那么他们可能会伪造会话ID cookie

因此,他们可能不仅仅是用某个用户名“发送”会话数据


如果他们能够访问登录用户的浏览器,他们可能会窃取他们的sessiond(存储在客户端),但每IP会话可以在某种程度上缓解这种情况。

会话变量存储在您的服务器上,而不是像cookie一样存储在用户计算机上。因此,用户永远无法修改
$\u会话['username']
。在会话中,您唯一需要真正提防的是会话劫持(其中一个用户获取另一个登录用户的会话id,并将其伪装成该用户)

放置一个加密的密码cookie/session var(可能带有salt),以便不时对照db进行检查。

检查“不时”当身份验证详细信息首先被劫持时,这对您没有帮助。它们不会改变。那么,我会在每次新会话开始时生成该密码,并将其存储在数据库中,还是只使用用户的加密密码?然后我会检查每个页面上的数据库吗?如果你想确保被劫持的cookie不可用,你可以为每个IP地址创建一个新的salt。缺点是一次不能在多个地方登录使用如何创建每个IP会话?@Jacob:我不知道。是的。当然,您可以手动执行此操作,方法是在登录时在会话数据中存储
$\u SERVER['REMOTE\u ADDR']
(或其他内容),并在每次请求时检查其一致性。是否有任何方法可以打击会话劫持?如果是,怎么做?