2

我有一个 url,当有效时看起来像这样:

site.com/page.php?id=12345

我试图了解我们是否可以接受 sql 注入。在这个特定的例子中,该值应该只是一个正整数值,因为它是一个 id 号。我们有时会使用可能是字母或文本字符串的其他变量,例如搜索结果页面。

用于提取 ID 变量的代码示例如下:

$variable = "0";
if (isset($HTTP_GET_VARS["id"])) {
  $variable = (get_magic_quotes_gpc()) ? $HTTP_GET_VARS["id"] : addslashes($HTTP_GET_VARS["id"]);
}

在大多数从 url 获取变量的情况下,都是以这种方式处理的。

这是否可以防止 sql 注入?

我应该使用 mysql_real_escape_string 吗?

我一直在阅读有关准备好的语句,但这似乎令人生畏,我们在网站上到处使用这些变量,有很多页面和查询。在短期或中期,通过并更换它们是不可行的。

如果有另一种方法可以在没有准备好的语句的情况下验证数据,任何建议都将不胜感激。

提前致谢。

4

1 回答 1

4

这是否可以防止 sql 注入?

不。

我应该使用 mysql_real_escape_string 吗?

不。

如果有替代方法。

不。
每一种方式都需要重写所有代码——这种方式或另一种方式。

然而,选择权在你。
如果网站的价值不值得正确重写它所需的努力 - 好吧,保持原样。
如果价值很高 - 例如,请尝试雇用某人来完成这项工作。

于 2013-05-15T05:56:07.613 回答