会话检查绕过了漏洞

Max*_*uza 0 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();
Run Code Online (Sandbox Code Playgroud)

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

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

Pou*_*abi 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;
?>
Run Code Online (Sandbox Code Playgroud)

请参阅php.net文档 链接

  • 如果你在标题函数后不使用exit,你的代码将继续执行 (2认同)