use*_*121 1 php sql security sql-injection
我在日志中发现有人试图攻击我的页面.我有一些子页面,通过URL提交的ID从数据库中提取数据.喜欢page.php?id = 666我在日志中可以找到的是这些攻击:
page.php?id=../../../../../../../../../../etc/passwd
page.php?id=/proc/self/environ
page.php?id=-1%27
Run Code Online (Sandbox Code Playgroud)
更重要的是,我的代码是否很弱?这次攻击可能成功吗?
$id = intval($_GET['id']);
$stmt = $con->prepare("SELECT *
FROM mytable AS myvar
WHERE myvar.ID =:ID");
$stmt->bindValue(':ID', $id, PDO::PARAM_INT);
$stmt->execute();
Run Code Online (Sandbox Code Playgroud)
提前致谢!
不,这段代码不容易受到SQL注入攻击.
intval带有PDO::PARAM_INT绑定的转换和预准备语句都确保在正在执行的语句的比较中仅使用整数值.
无论如何,上述请求似乎并不仅仅针对识别SQL注入,而是针对几个不同的漏洞,例如路径遍历(CWE-22)和本地文件包含(CWE-98).所以你可能也想要注意那些漏洞.