对于定义的值类型(例如数字),避免 SQL 注入的最佳方法是验证值;因为与 mysqli 准备相比,这样做更容易。在 PHP 中,我们可以通过以下方式做到这一点。
1. if(!is_numeric($value)) {$value=0;}
2. $value=floatval($value);
3. $value=intval($value);
4. $value=$value * 1;
什么是最可靠的?或者更好的主意?
UPDATE:尽管我在最初的问题中已经说过,但大多数人都强调参数化查询的有用性。毫无疑问,这是避免 SQL 注入的最有效方法。但是当我们可以简单地验证一个整数数值时;恕我直言,不需要参数化。
对于整数和浮点数,如果您不想进行参数化查询,可以使用它。
$clean_number = (int)$value;
$clean_number = (float)$value;
这些实际上将值转换为int
and float
,这比intval()
and floatval()
例如,因为它不会遭受函数开销。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)