Goo*_*bot 2 php mysql sql integer sql-injection
避免SQL注入定义值类型(如数字)的最佳方法是验证值; 因为与mysqli准备相比,这样做更容易.在PHP中,我们可以做到这一点.
1. if(!is_numeric($value)) {$value=0;}
2. $value=floatval($value);
3. $value=intval($value);
4. $value=$value * 1;
Run Code Online (Sandbox Code Playgroud)
什么是最可靠的?还是一个更好的主意?
更新:虽然我在原始问题中已经说过,但大多数人都强调参数化查询的有用性.当然,这是避免SQL注入的最有效方法.但是当我们可以简单地验证整数数值时; 恕我直言,没有必要进行参数化.
对于整数和浮点数,如果您不想进行参数化查询,则可以使用此选项.
$clean_number = (int)$value;
$clean_number = (float)$value;
Run Code Online (Sandbox Code Playgroud)
这些实际上是将值转换为int
和float
,这比intval()
并且floatval()
例如因为它不会遭受函数开销.
归档时间: |
|
查看次数: |
6085 次 |
最近记录: |