php - 将用户限制在他们的个人资料页面

标签 php mysql

在我的网站上,我有一个用户登录系统,当他们登录时,他们会被带到他们的个人资料页面,这是由他们的 uid 吞噬的自然神论。问题是,没有什么可以阻止用户只是更改 uid 并转到其他人的个人资料并扮演他们的角色。为了阻止这种情况,我实现了一个 URL/MySQL 系统,如果用户的 uid 不是 URL 中的 uid,他们将被重定向到他们自己的配置文件。这里的问题是,在配置文件上有一些表单可以更改 URL,这样做会删除 uid 查询,导致页面(因为缺少 uid)将您带到您的配置文件并忽略表单输入。

代码是:

<?php
mysql_connect ('x', 'x', 'x');
mysql_select_db ('x');

if(isset($_COOKIE['wd_un'])) {
    $un = $_COOKIE['wd_un'];
    $pass = $_COOKIE['wd_pass'];

    $cook = "SELECT * FROM x WHERE username = '$un' AND password = '$pass' limit 1";
    $cookr = mysql_query($cook) or die (mysql_error());
        if(mysql_num_rows($cookr) == 0) {
            header ("Location: index.php");
        }
        else {
            $urluid = mysql_real_escape_string($_GET['uid']);
            $uidcheck = "SELECT * FROM x WHERE username = '$un' AND password = '$pass'";
            $uidcheckq = mysql_query($uidcheck) or die (mysql_error());
            while($rcu = mysql_fetch_assoc($uidcheckq)) {
                $dbuid = $rcu['uid'];
                        if($urluid != $dbuid) {
                            header ("location: home.php?uid=$dbuid");
                        }
                        else {
                        }
            }
        }
    }
mysql_close();
?>

有变通办法吗?

最佳答案

你这里的代码块充满了错误。

首先,绝对不要将用户密码存储在 cookie 中。 您应该只在 cookie 中存储一个 session ID,然后将其余 session 数据存储在数据库中的 session 表中,其中包含用户 ID 以及您可能希望基本访问的任何其他内容......密码不应该也可以在这张表中。

现在,您可以安全地在 URL 中使用 user_id,因为交叉引用会将人们拒之门外。

当然,在加载时,您会交叉引用根据您的 cookie id 提取的 session 表中的 mysql 结果。如果它们不匹配,显然会启动它们。

至于您的表单重定向,您需要重组处理发布的方式。您可以让您的个人资料页面始终只提取与您的 cookie 中的 session ID 相关的个人资料。这将消除对 URL 的依赖并彻底解决这个问题。

此外 - 请查看 mysql_real_escape_string() 以清理您的输入。盲目接受 mysql 查询的 cookie 信息是非常危险的。除非您确实打算在您的站点中留下巨大的注入(inject)孔。

关于php - 将用户限制在他们的个人资料页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9026908/

相关文章:

mysql - 带有 Join 语句的 SQL 更新

php - 在 htaccess 指令之后 POST 变为 GET

php - 无法使用 img PHP 从数据库中删除行

PHP - setlocale(LC_MONETARY, 'en_IN' );不工作

c# - 在开始另一个事务之前等待其他事务提交/回滚?

mysql - Moodle数据库-用户权限

mysql - 当拼写不完全正确时,mySQL 是否有可能获得结果

php - 在不加载页面的情况下对图像执行 PHP 函数 onClick

php - 将PHP error_log文件保留在Web根目录之外

php - 使用 PHP 使用 Mysql 数据库中的数据填充文本字段