我在日志中发现有人试图攻击我的网页。我有一些子页面,通过URL提交的ID从数据库中提取数据。喜欢page.php?id = 666 我在日志中可以找到的是这些攻击:
page.php?id=../../../../../../../../../../etc/passwd
page.php?id=/proc/self/environ
page.php?id=-1%27
更重要的是,我的代码是否很弱?这次攻击可能会成功吗?
$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();
提前致谢!
答案 0 :(得分:5)
不,此代码不容易受到SQL注入攻击。
intval
转换和带有PDO::PARAM_INT
绑定的预准备语句都确保在正在执行的语句的比较中仅使用整数值。
无论如何,上述请求似乎并不仅仅针对识别SQL注入,而是针对几个不同的漏洞,例如: g。,Path Traversal (CWE-22)和Local File Inclusion (CWE-98)。所以你可能也想要注意那些漏洞。
答案 1 :(得分:3)
看起来攻击者试图访问Web服务器上各种目录中的文档和其他数据。我不认为这是SQL注入。但是,请确保在必要时保护对目录和所有文档的访问。
您正在使用准备好的语句处理PDO,这样可以防止注入。