这段代码是否可以安全地从SQL注入?

时间:2013-07-26 23:29:58

标签: php mysql security code-injection

我在MySQL表中有一列可以是0或1.如果用户没有输入0或1,那么我只需将该值设置为0。 我想知道这个PHP代码是否可以从SQL注入中“安全”:

$flag = $_GET["f"];
if ($flag != 1) $flag = 0;
$sql = "SELECT * from table WHERE column=$flag";
$db->query($sql);

我通常使用预备语句,但我想知道这段代码是否完整。 如果这可以打破,那么我想看一个例子。

1 个答案:

答案 0 :(得分:3)

不,这不安全。 SQL注入示例:1 OR 1 = 1

这等于1,因为(int)"1string" === 1

在将其传递给查询之前,我会考虑明确(int)强制转换:

$sql = "SELECT * from table WHERE column=".(int)$flag;