我主要是一名C++程序员,但我正在尝试学习一些PHP。
显然,实现Web用户会话的方法是使用$_SESSION变量将用户的登录ID存储在cookie中。
是否有人可以修改他们的cookie以获得不同的权限或登录为另一个用户?
看起来这个身份验证机制就像让用户将他们的ID存储在文件中-然后只是相信他们不去改变它。
是否有什么防止这种情况的措施呢?
谢谢!
我主要是一名C++程序员,但我正在尝试学习一些PHP。
显然,实现Web用户会话的方法是使用$_SESSION变量将用户的登录ID存储在cookie中。
是否有人可以修改他们的cookie以获得不同的权限或登录为另一个用户?
看起来这个身份验证机制就像让用户将他们的ID存储在文件中-然后只是相信他们不去改变它。
是否有什么防止这种情况的措施呢?
谢谢!
PHP会话只有在您的应用程序使其安全时才是安全的。 PHP会话将为用户提供一个伪随机字符串(“会话ID”)以便他们进行身份识别,但如果该字符串被攻击者截获,攻击者可以冒充该用户。
这些信息摘自"PHP手册中的会话管理基础知识", 但是简化了一些内容。可能会漏掉一些东西。请务必仔细阅读。
$userId-
)启用 session.use_only_cookies
并禁用 session.use_trans_sid
Referer
标头中定期 重新生成会话ID 并 在重新生成后不久使旧的会话ID失效
可选地在 $_SESSION
中跟踪与请求相关的其他信息(IP地址、用户代理字符串等)
不可以,会话是存储在服务器上的,用户无法访问。它用于在整个网站中存储信息,例如登录会话。
以下是使用示例:
<?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存储在计算机上。如果未经授权的用户获取了这些字符串,他们就可以访问该网站。
用户无法编辑这些值,但是会话ID以一串长的随机字符串的形式存储在计算机的cookie中。如果未经授权的用户获得了这些字符串,他们就可以访问该网站。
如果这样做:
$_SESSION['user'] = $username;
$username
不会直接存储在cookie中。相反,将生成一个唯一的会话ID并存储在cookie中。$_SESSION
中存储的信息仅存储在服务器端,永远不会发送到客户端。在客户端发出后续请求时,当您执行session_start()
时,服务器将通过cookie中存储的ID加载会话数据。对于大多数用例而言,PHP会话ID足够难以猜测。与其他广泛使用的系统相比,难度不大也不小。
仅信任会话cookie(仅存在会话cookie)从安全角度来看似乎不是很可靠,无论这个会话cookie来自哪里 - PHP还是其他地方。
因此,简而言之:PHP会话的安全性取决于您对它们的使用。对我所知道的任何基于会话cookie的系统都是如此。
既然你是C++程序员,那么你只需要知道客户端可见的会话只是指向不同地址空间(服务器)的指针,因此,无法从客户端模式访问该会话。