我主要是一个C++程序员,但我正在尝试学习一些PHP。
显然,实现web用户会话的方法是使用$_SESSION变量将用户的登录ID存储在cookie中。
难道某人不能只修改他们的cookie,给他们不同的特权,或者以不同的用户登录吗?
似乎这种身份验证机制只是让用户将他们的ID存储在一个文件中-然后信任他们不会更改它。
有什么东西可以阻止这种情况发生吗?
谢谢!
发布于 2012-04-16 03:48:39
否,会话存储在服务器上,用户无法访问。它用于存储整个站点的信息,例如登录会话。
下面是一个用法示例:
<?php
session_start();
if (password_verify($_POST['password'], $hash)) {
$_SESSION['auth'] = true;
}
?>
然后,可以跨站点访问该会话,以检查用户是否已通过身份验证。
<?php
session_start();
if ($_SESSION['auth']) {
echo "You are logged in!";
}
?>
用户不能编辑这些值,但是会话的ID通过cookie以长随机字符串的形式存储在计算机上。如果未经授权的用户获得对这些字符串的访问权限,则他们有可能访问该站点。
发布于 2012-04-16 03:49:57
如果这样做:
$_SESSION['user'] = $username;
那么$username
将不会直接存储在cookie中。相反,将生成唯一的会话id并将其存储在cookie中。
您存储在$_SESSION
中的信息只存储在服务器端,而不会发送到客户端。在客户端的后续请求中,当您执行session_start()
时,服务器将通过存储在cookie中的id加载会话数据。
它相对安全。唯一可能发生的事情是,有人可以截取会话id,从而窃取真正的用户会话。不过,HTTPS可以防止这种情况发生。
发布于 2017-01-21 23:32:06
由于您是一名C++程序员,您只需要知道客户端可见的会话只是不同地址空间(服务器)上的一个指针,因此无法从客户端模式访问该会话。
https://stackoverflow.com/questions/10165424
复制相似问题