query(" SELECT * FROM users WHERE us-6ren">
gpt4 book ai didi

php - 从 $_COOKIE ["username"] 在 SQL 中验证用户的安全性如何?

转载 作者:行者123 更新时间:2023-12-04 04:43:35 26 4
gpt4 key购买 nike

$user = $_COOKIE["username"];
$admin = $db->query("
SELECT *
FROM users
WHERE username = '$user'
AND admin = '1' -- if 1, user is an administrator
");
if ($admin->rowCount()==1) {
//stuff related to admin controls/admin specific pages
}

验证用户是管理员的安全性如何?最终用户是否可以编辑他们的 cookie 信息,如果他们知道管理员的姓名,他们可以以某种方式获得访问权限?如果是这种情况,应该 $user也被 sanitizer 以防止恶意行为?

最佳答案

我认为您误解了登录的概念以及之后会发生什么。

在您的代码中,他们如何首先获取 cookie 以便您可以登录?正好相反。

您首先通过使用他们选择的用户名和密码并将其保存到数据库来注册某人。稍后,为了让他们登录,他们使用登录表单,您输入他们输入的用户名和密码,并验证它是否与存储在数据库中的用户名和密码匹配。到目前为止没有使用 session 或 cookie。

因此,如果用户名和密码在 db 中匹配在一起,那么他们已经确认了凭据(注意在这种情况下,您将需要唯一的用户名,否则,无论多么不可能,如果两个人拥有相同的用户名/密码,他们都会访问数据库中的第一个帐户分贝)

现在,如果您想在整个站点中检查他们是否登录(当然),您需要在验证他们的凭据良好时设置 session 。这将存储一些关于他们的数据,您可以在每个页面上检查并验证他们是否登录。这可以是他们的用户名,无论如何。

你可以在这里进行任何长度,并检查他们在每个页面上的 IP 是否仍然匹配等。 Ssessions 很难被破解,而且很可能如果有人在服务器上破解了一个 session ,他们无论如何都可以访问各种其他东西(这是安全的)使用 session )。

默认情况下,在大多数服务器上, session 实际上也会使用 cookie,它是存储在服务器上的 session 的 session ID。因此,当您获取用户的 session 数据时,它会从该用户的 cookie 中获取 ID,并访问存储在服务器上的相关信息。

不要在 session /cookie 中存储敏感信息。

为了存储他们的密码,您需要使用 crypt(而不是 md5 或 sha)并对其使用加盐方法,例如河豚。

关于php - 从 $_COOKIE ["username"] 在 SQL 中验证用户的安全性如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18543082/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com