我知道还有其他关于 cookie 一般安全性的问题,但想知道它们在这种特定情况下的安全性,以及是否有更好的方法来解决它。
我有一个完整的系统,用户可以在其中登录并查看他们所属团队的数据。我正在使用会话,但决定转而使用 cookie,因为这允许用户在返回页面(比如第二天)时自动登录,就像在 facebook 等网站上一样。
我有一个功能,可以在用户进入页面时检查用户计算机上的 cookie,如果他们已经有 cookie 则将其登录(同时刷新管理员 cookie,因为由于能够删除管理员权限,此 cookie 仅持续一天)。我想知道这种 cookie 的安全性如何,是否有人可以操纵 cookie 来登录或让自己成为管理员。
function checkForCookies() {
if (isset($_COOKIE["username"])) { // Sees if the user has already got a cookie from logging in recently
if (isset($_COOKIE["admin"])) { // Sees if admin cookie is set as this has a shorter expiry as it is more important if changed
header('Location: ../HomePages/HomePage.php');
}
else {
$tempCon = new DBConnect();
$sql = "SELECT * FROM users WHERE Username = :username";
$stmt = $tempCon->conn->prepare($sql);
$stmt->bindParam(':username', $_COOKIE["username"]);
$stmt->execute();
while ($row = $stmt->fetch(PDO::FETCH_OBJ)) {
setcookie("admin", $row->Admin, time() + 86400, "/", "", true, true);
}
header('Location: ../HomePages/HomePage.php');
}
}
else {
header('Location: ../Login/Login.php');
}
}
慕慕森
catspeake