会话检查绕过了漏洞

时间:2014-09-23 08:39:24

标签: php security get

我们有一个php页面,它是该网站的管理部分。它用于对数据库执行某些更新操作。代码如下所示

session_start(); 
     if (!isset($_SESSION['somevariable']) ) 
        {
        header("Location:loginpage.php");
        }



    $id=$_GET['somevariable];
$sql = "UPDATE sometable SET somecolumn='' where someothercolumn=?";
$stmt = $con->prepare($sql);
$stmt->bind_param('s',$id);
$stmt->execute();

我们注意到有一些漏洞,这段代码似乎是在一个周期性间隔(5秒)从未知来源运行,这似乎没有人拥有管理部分的密码并且正在运行手动操作。

我们想知道黑客可以绕过此登录检查并执行其余代码而无需密码吗?对上述代码中的漏洞有任何见解都会有所帮助。提前致谢

2 个答案:

答案 0 :(得分:7)

我看到了两个漏洞:

1)CSRF(直接从get方法使用变量)

2)调用标题函数后退出未使用

正确的代码应该是这样的:

<?php
header("Location: http://www.example.com/"); /* Redirect browser */

/* Make sure that code below does not get executed when we redirect. */
exit;
?>

参见php.net文档 Link

答案 1 :(得分:0)

如果管理员有活动会话,并且黑客以某种方式找到了他们的PHPSESSID cookie的值,他们就可以发送cookie并劫持会话。

确保使用SSL加密,以使某人难以窃听连接并获取Cookie。