admin

如何验证整数值以避免SQL注入?

sql

避免对诸如数字之类的已定义值类型进行SQL注入的最佳方法是验证值。因为与mysqli准备相比,这样做更容易。在PHP中,我们可以这样做。

1. if(!is_numeric($value)) {$value=0;}
2. $value=floatval($value);
3. $value=intval($value);
4. $value=$value * 1;

什么是最可靠的?还是更好的主意?

更新:
尽管我在最初的问题中已经说过,但是大多数人都强调了参数化查询的有用性。无疑,这是避免SQL注入的最有效方法。但是,当我们可以简单地验证整数数值时;恕我直言,无需参数化。


阅读 142

收藏
2021-06-07

共1个答案

admin

对于整数和浮点数,如果不想执行参数化查询,则可以使用它。

$clean_number = (int)$value;

$clean_number = (float)$value;

这些实际上将值转换为intfloat,这比intval()和更快floatval(),例如,因为它不会遭受函数开销。

2021-06-07