PHP会话安全缺陷?

时间:2012-11-20 05:10:19

标签: php security session

我是php编码的新手,基本上我正在创建一个用户面板,用户登录并从那里访问他们的仪表板,让他们做事。

我正在使用php会话来执行此操作,并且基本上位于我放置的仪表板的顶部:

session_start();
if(!session_is_registered(myusername)){
header("location:index.php");

这样就可以将未登录的用户重定向到index.php。

问题是用户可以从仪表板执行某些命令,如下所示: /dashboard.php?reset=true

由于某些原因,执行这些命令不需要活动会话。任何人都可以在没有活动会话的情况下转到/dashboard.php?reset=true并重置所有内容!

有人知道如何解决这个允许人们这样做的安全漏洞吗?

由于

4 个答案:

答案 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来电后设置exitheader()或其他终止方式。 header()不会停止执行,因此即使它正在发送位置:重定向,它也会继续通过您的代码。

答案 3 :(得分:0)

你可能正在使用php 5.4.x

自PHP 5.3.0起,

session_is_registered已被弃用,自PHP 5.4.0起已被删除。

使用isset($_SESSION['myusername'])代替session_is_registered

修改

在从标题重定向后应始终放置

exitdie也可以。