PHP中的SQL注入,sprintf和数值

时间:2013-04-05 10:47:06

标签: php sql-injection

我正在尝试使我的查询对SQL注入安全,幸运的是,可以定位的变量只是整数或浮点数,所以我想知道,在这种情况下,它是否足以使用sprintf()(不甚至使用mysqli_real_escape_string())。我做了一些测试,直到它看起来很好,因为它将任何输入解析为float / integer,因此不应该执行任何SQL语句。有没有办法破解这个?对我来说,这看起来太容易和太棒了:D

3 个答案:

答案 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()

就足够了