我想限制用户访问其特定数据。 该网站是所有静态html与至少的PHP来检查用户是否有权限。 网址格式是 somesite.tld /的public_html /英语/用户/ 1 / account_overview.php?ID = 1 该网站提供某些语言版本。网址的“英语”部分将根据所选语言(法语,德语,荷兰语......)而改变。 'english'部分是public_html中的文件夹。 'user'部分是'english'中的文件夹,'1'是'user'中的文件夹。
我有一个$ _SESSION ['userid']。 此时php脚本检查$ _GET ['id']是否存在以及$ _GET ['id']是否等于$ _SESSION ['userid'] 但只是将网址更改为 somesite.tld /的public_html /英语/用户/ 2 / account_overview.php?ID = 1 如果您使用userid = 1登录,则不会限制对“2”文件夹的访问。
当有人手动修改网址时,如何停止显示数据?
答案 0 :(得分:1)
我建议你完全避免这种情况。而不是使用$ _GET变量来确定用户是否有权查看帐户,为什么不使用一个使用会话变量的PHP检索脚本来获取用户的帐户。
它会是这样的:
您将所有帐户文件存储在受保护的目录中,例如:
/accounts/
然后在你的PHP文件中:
session_start();
include($_SERVER["DOCUMENT_ROOT"]."/accounts/".$_SESSION["userid"].".html");
这将完全避免这个问题。通过将目录读取保护到除PHP用户以外的所有目录,可以防止人们在未登录的情况下访问文件。然后您没有任何松散的$ _GET变量,并且所有帐户信息都是安全的。
答案 1 :(得分:0)
另一种方法是在AccountController或account.php中,
if($userId != $superAdminId || $userId != $_SESSION["userid"]){
//set error header
//show error 401
}