我在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);
我通常使用预备语句,但我想知道这段代码是否完整。 如果这可以打破,那么我想看一个例子。
答案 0 :(得分:3)
不,这不安全。 SQL注入示例:1 OR 1 = 1
这等于1,因为(int)"1string" === 1
。
在将其传递给查询之前,我会考虑明确(int)
强制转换:
$sql = "SELECT * from table WHERE column=".(int)$flag;