我是php编码的新手,基本上我正在创建一个用户面板,用户登录并从那里访问他们的仪表板,让他们做事。
我正在使用php会话来执行此操作,并且基本上位于我放置的仪表板的顶部:
session_start();
if(!session_is_registered(myusername)){
header("location:index.php");
这样就可以将未登录的用户重定向到index.php。
问题是用户可以从仪表板执行某些命令,如下所示: /dashboard.php?reset=true
由于某些原因,执行这些命令不需要活动会话。任何人都可以在没有活动会话的情况下转到/dashboard.php?reset=true并重置所有内容!
有人知道如何解决这个允许人们这样做的安全漏洞吗?
由于
答案 0 :(得分:2)
快速回答: 你可以在/dashboard.php中添加相同的代码吗?文件
<强>更好强> 如果用户是管理员,则声明会话变量。
在重定向之前登录时:
session_start();
$_SESSION['is_admin']="yes" ;
在“执行文件”中:
if(isset() && $_SESSION['is_admin'] == "yes")
{
//do your thing
}
else
{
echo : "you are not allowed to do that";
}
获取更多安全提示:link 它会为你指出一些安全问题
答案 1 :(得分:0)
我想reset
你的意思是密码。只是让那部分问他们旧密码以及旧密码。并且停止机器人使用像CAPTCHA这样的summat,
答案 2 :(得分:0)
您需要在die
来电后设置exit
或header()
或其他终止方式。 header()
不会停止执行,因此即使它正在发送位置:重定向,它也会继续通过您的代码。
答案 3 :(得分:0)
你可能正在使用php 5.4.x
自PHP 5.3.0起, session_is_registered
已被弃用,自PHP 5.4.0起已被删除。
使用isset($_SESSION['myusername'])
代替session_is_registered
修改强>
在从标题重定向后应始终放置 exit
,die
也可以。