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

2023-12-27

对于定义的值类型(例如数字),避免 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(使用前将#替换为@)

如何验证整数值以避免 SQL 注入? 的相关文章

随机推荐

  • 如何在 Rascal 中将值类型转换为 Map?

    我有一个存储映射的值类型变量 但我无法通过提供键来访问这些值 rascal gt a value s s rascal gt a s stdin 2 3 lt 1 2 gt lt 1 5 gt subscript not supported
  • sql:如果另一列在命名空间中引起冲突,则更新列

    我有一个 SQL 表 其中包含包列表 10000 个唯一条目的顺序 以及任何给定包的相应类别 100 个唯一条目的顺序 给定的包可以属于多个类别 15000 个唯一组合的顺序 这就是表的大小 所有包名称都应该是唯一的 并且不与类别名称冲突
  • 更新 Visual Studio 中的现有架子

    Visual Studio 2013 可以更新现有架子吗 我继续编辑我的文件 现在我想用当前工作区的最新版本更新架子 事实证明 您只需创建一个同名的新架子 然后确认 替换架子集 即可 愚蠢的tfs
  • 如何访问 Model ZF2 中的 getServiceLocator

    我正在尝试访问模型中的 getServiceLocator 函数 它在控制器中工作 但是当我将它移动到模型中时 我在尝试访问时得到 NULL Call to a member function get on null 下面的链接似乎提供了一
  • C++ 和 Python:从 python 向 c++ 传递并返回 2D 双指针数组

    我想将一个 2D 数组从 Python 传递到 C 函数 然后将一个相同类型 相同维度的数组返回给 Python 我知道这个问题已经被问过好几次了 但我一直无法找到与我的问题相关的答案 对于我的问题 我必须使用双指针数组并让函数返回双指针数
  • Java 本地化文件名

    我如何在java中设置本地化文件名 目前 每次我单击应用程序中具有非ascii文件名的本地化文件时 都会弹出Windows保存对话框 但如果字符集高于ISO 则它不会正确显示文件名88859 1 这是我保存文件的代码 InputStream
  • Web Api ModelState 验证忽略 DisplayAttribute

    给定一个具有这些数据注释的模型 public class Example Required Display Name Activity response public string ActivityResponse get set 我希望模
  • 如何使用 JavaScript (lodash) 深度映射对象键?

    https lodash com docs mapKeys https lodash com docs mapKeys 是否可以使用 Lodash 深度映射对象的键 如果没有 是否有另一个库提供此功能 如果与其他深度迭代和操作功能组合在一起
  • 将 docker 镜像部署到云运行时如何解决“容器无法启动错误”

    问题陈述 我创建了一个 docker 应用程序 一个简单的 python 代码 并尝试使用 Google Cloudrun 进行部署和自动运行 但每次在部署过程中我都会看到以下错误 command gcloud run deploy my
  • Sonata 管理员:验证后发送电子邮件

    我正在使用 symfony2 sonata admin bundle 和 mongodb 我刚刚制作了一个添加用户的界面 当用户在 sonataadmin 的 Web 界面上按 创建 时 如何发送电子邮件 我必须覆盖 Sonata Admi
  • Ruby gsub:有更好的方法吗

    我需要删除所有前导和尾随非数字字符 这就是我想出来的 有没有更好的实现 puts s gsub D gsub D 选择您想要的内容 使用括号 通常会更清楚 而不是消除您不想要的内容 此外 这只需要一次正则表达式评估 s match D D
  • 在 Eclipse 中,当 Assert.assertEquals 失败时,如何查看它的输入?

    我不是 Eclipse 专家 所以请原谅我的笨拙 在 Eclipse 中 当我调用 Assert assertEquals obj1 obj2 但失败时 如何让 IDE 显示 obj1 和 obj2 我在用着JExample http sc
  • CreateWindow失败,错误50(不支持该请求。)

    我在这里做错了什么 但错误消息没有给我任何线索 对 CreateWindow 的调用总是失败 返回 NULL 并且 GetLastError 返回 50 我想要的只是一个简单的空白窗口 但显然我的请求 不支持 gcc basic c o b
  • 如何将 Unicode 标题传递给 matplotlib?

    无法在 matplotlib 中获得正确的标题 technologie n in C gives technologie n in C 已经尝试过的可能解决方案 u technologie n in C 不起作用 也不 coding utf
  • 为什么 NSWindow 动画器 setFrame:display:animate: 有时不起作用?

    我是可可的新手 我正在努力扩展项目的功能 该项目的原始功能是打开一个文件并在nsbox中显示文件图标 在nswindow中 当我单击菜单打开时 它工作正常 但是当我以编程方式打开文件 使用菜单调用的相同 openfile 函数 时 它不显示
  • mod_rewrite VS 相对路径

    我的 mod rewrite 代码是 Options FollowSymLinks Options Indexes RewriteEngine On RewriteCond REQUEST FILENAME d RewriteCond RE
  • 使用 Visual Studio 2017 的 Azure 数据工厂项目

    我不确定 Visual Studio 2017 目前是否支持 Azure 数据工厂项目 我刚刚安装了 VS 2017 但无法打开我们的解决方案 因为有一个 azure 数据工厂项目 Azure 数据工厂是否支持 Visual Studio
  • 表达式树 - 如何声明实例?

    我是表达式树的新手 所以我不确定如何问这个问题或使用什么术语 这是我想要做的事情的一个过于简化的版本 Bar bar new Bar Zap gt bar Foo public static void Zap
  • F# 类型提供程序相关的嵌套类型

    我正在尝试构建一个嵌套的 TypeProviderProvidedProperty根据父级的类型值生成 我想要的结果如下 r bin Debug library dll open Library TypeProviders type sdm
  • 如何验证整数值以避免 SQL 注入?

    对于定义的值类型 例如数字 避免 SQL 注入的最佳方法是验证值 因为与 mysqli 准备相比 这样做更容易 在 PHP 中 我们可以通过以下方式做到这一点 1 if is numeric value value 0 2 value fl