【发布时间】:2014-09-23 08:39:23
【问题描述】:
我们有一个 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 秒)运行的,这看起来不像有人拥有管理部分的密码并且正在运行手动操作。
我们想知道黑客能否绕过此登录检查并在没有密码的情况下执行其余代码?对上述代码中的漏洞的任何见解都会有所帮助。提前致谢
【问题讨论】:
-
注意到代码中缺少一个引号!
-
@knittl 关于攻击者如何做到这一点以及如何避免它的任何建议?将其更改为 POST 而不是获取帮助?
-
@MaximDsouza:pouya darabi's answer 是正确的。
header不会停止脚本执行 -
@MaximDsouza 使用
session.use_strict_mode=On。 link