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 次 |
| 最近记录: |