我有一个网络应用程序,在用户登录后,他/她为用户名设置了 cookie,由setcookie()
.
请建议更好的安全方法。
使用 PHP 会话而不是 cookie。会话变量是服务器端的。PHP 将自动处理会话管理。如果您想要更多控制权,也可以重载其功能。
http://php.net/manual/en/intro.session.php
session_start();
$_SESSION['user'] = 'michael'
使用 PHP 会话,只有会话标识符存储在浏览器 cookie 中。您可以在超全局变量中存储任何信息,$_SESSION
浏览器将无法看到或篡改这些变量。
为了更加安全,您应该存储用于登录的远程地址,并在每次页面加载时进行比较。这是为了确保没有人劫持会话 ID 并假装从另一个位置登录。
session_start();
if (_logging_in__) {
$_SESSION['user'] = 'michael'
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
}
查看用户是否登录。
session_start();
if (isset($_SESSION['user'])) {
// the user is logged in
if ($_SERVER['REMOTE_ADDR'] != $_SESSION['ip']) {
// the session id was hijacked so log out
session_destroy();
exit;
}
}