SQL注入尝试 - 我的代码容易受到攻击吗?

时间:2014-03-31 18:25:47

标签: 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

更重要的是,我的代码是否很弱?这次攻击可能会成功吗?

$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();

提前致谢!

2 个答案:

答案 0 :(得分:5)

不,此代码不容易受到SQL注入攻击。

intval转换和带有PDO::PARAM_INT绑定的预准备语句都确保在正在执行的语句的比较中仅使用整数值。

无论如何,上述请求似乎并不仅仅针对识别SQL注入,而是针对几个不同的漏洞,例如: g。,Path Traversal (CWE-22)Local File Inclusion (CWE-98)。所以你可能也想要注意那些漏洞。

答案 1 :(得分:3)

看起来攻击者试图访问Web服务器上各种目录中的文档和其他数据。我不认为这是SQL注入。但是,请确保在必要时保护对目录和所有文档的访问。

您正在使用准备好的语句处理PDO,这样可以防止注入。