我正在尝试使我的查询对SQL注入安全,幸运的是,可以定位的变量只是整数或浮点数,所以我想知道,在这种情况下,它是否足以使用sprintf()(不甚至使用mysqli_real_escape_string())。我做了一些测试,直到它看起来很好,因为它将任何输入解析为float / integer,因此不应该执行任何SQL语句。有没有办法破解这个?对我来说,这看起来太容易和太棒了:D
答案 0 :(得分:1)
为什么不使用准备好的陈述?它们提供了更好的SQL注入保护,如果重用它们可能会提高查询性能。
答案 1 :(得分:-2)
$int = 125 . 'asda';
$float = 654.12;
function validateNumber($number) {
if (strpos($number, '.')) {
$number = floatval($number);
} else {
$number = intval($number);
}
return $number;
}
echo validateNumber($int); // 125
echo '<br />';
echo validateNumber($float); // 654.12
检查number是int还是float并返回它们的值。
答案 2 :(得分:-2)
使用sprintf()
就足够了
是