会话是否可由客户/用户修改?

Sev*_*Sev 5 php security session

在我的PHP Web-App中,我使用会话来存储用户的数据.例如,如果用户登录,则生成User类的实例并将其存储在Session中.

我有与每个用户关联的访问级别来确定他们的权限.

通过以下方式将用户存储在会话中:

$_SESSION['currentUser'] = new User($_POST['username']);
Run Code Online (Sandbox Code Playgroud)

例如:

if($_SESSION['currentUser'] -> getAccessLevel() == 1)
{
  //allow administration functions
}
Run Code Online (Sandbox Code Playgroud)

其中getAccessLevel()只是User类中的一个get方法,它返回_accesslevel成员变量.

这样安全吗?或者客户端可以通过某种类型的会话操作以某种方式修改其访问级别?

kar*_*m79 2

不可以,客户端无法修改其访问级别。客户端上存储的唯一内容是会话密钥,它通过 cookie 或 GET 参数传播。会话密钥与相应的会话记录相关联,该会话记录是存储在服务器端(通常在临时目录中)的文件,其中包含“打孔”。您不希望会话密钥泄露给第三方:

泄露的会话 ID 使第三方能够访问与特定 ID 关联的所有资源。

看看这个: http: //www.php.net/manual/en/session.security.php