sql注入场景中格式化函数与参数?

2024-01-09

我知道 sql 语句中参数的使用,但出于好奇,使用 Format 函数来防止 sql 注入而不是使用参数是安全的。

像这个样本

sCustomer : string
begin
 AdoSql.CommandText:=Format('Select SUM(value) result from invoices where customer=%s',[QuotedStr(sCustomer)]);
end;

那会probably防止 SQL 注入,假设QuotedStr按预期工作,并且没有任何边缘情况可以破坏它。 (这绝不是保证。正如 Linas 在评论中指出的那样,MySql 允许您使用\'逃避引号。其他 DBMS 可能具有类似的功能。具有足够系统理论知识的攻击者将能够利用它们。)

然而,即使 QuotedStr 足够好,出于不同的原因使用参数仍然更好:性能。当您将参数与查询分开时,您最终可能会使用不同的参数多次发送完全相同的查询代码。如果这样做,数据库可以缓存在计算查询时所做的大量工作,因此您的数据库访问速度会更快。当您将参数混合到查询代码本身中时,这不起作用(或至少不起作用)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sql注入场景中格式化函数与参数? 的相关文章

  • 仅当所有记录都匹配时 SQL 连接

    我有3张桌子 CP carthead idOrder CP cartrows idOrder idCartRow CP shipping idCartRow idShipping dateShipped 每个 idOrder 可以有多个 i
  • SQL 事务如何工作?

    我从事 SQL 工作的时间并不长 但我想我明白 通过将 SQL 语句包装在事务中 所有语句都会完成 或者都不会完成 这是我的问题 我有一个包含 lineitem 集合的订单对象 行项目在 order OrderId 上相关 我已经证实所有
  • 有很多数据库视图可以吗?

    我很少 每月 每季度 使用 Microsoft SQL Server 2005 数据库视图生成数百份 Crystal Reports 报告 在我不读取这些视图的所有时间里 这些视图是否会浪费 CPU 周期和 RAM 因为我很少从视图中读取数
  • 使用 SqlDataReader.IsDBNull 时使用列名

    我已经得到了从 SQL DB 读取数据的代码 我不知道应该如何编辑它 以便我可以使用原始列名称而不是列索引 string query SELECT FROM zajezd WHERE event thisrow AND year klien
  • 显示包含特定表的所有数据库名称

    我的 SQL Server 中有很多数据库 我必须只搜索包含特定表名的数据库名称Heartbitmaster 我有很多数据库 例如Gotgold DVD等 我只想从包含此表的查询中查找数据库名称Heartbitmaster 我搜索我尝试查询
  • FreePascal x64 上系统单元函数的汇编调用

    我有一些 Delphi 汇编代码 可以在 Win32 Win64 和 OSX 32 上编译并正常工作 XE2 但是 由于我需要它在 Linux 上工作 所以我一直在考虑编译它的 FPC 版本 到目前为止 Win32 64 Linux32 6
  • 如何使用内联 SQL 参数化 IN 语句的集合? [复制]

    这个问题在这里已经有答案了 可能的重复 参数化 SQL IN 子句 https stackoverflow com questions 337704 parameterizing a sql in clause 你好 我有一个查询 如下所示
  • Mysql获取特定表的最后一个id

    我必须从特定的插入表中获取最后的插入 ID 可以说我有这个代码 INSERT INTO blahblah test1 test 2 VALUES test1 test2 INSERT INTO blahblah2 test1 test 2
  • 表达与空列表相同的 IN 条件的可移植方式是什么?

    例如 工作于sqllite3 select from orders where custid and status in 但它失败了postgres ksysdb select code applicable objecttype from
  • 查找Delphi项目中的所有编译错误

    我正在对我的 Delphi 项目进行一些重构 我希望能够做出改变 然后看看all项目中因该更改而中断的地方 类似于 Eclipse 列出项目的所有编译错误 在 Java 中 在 Delphi 中 我可以进行更改 然后重新编译我的项目 但编译
  • 如何从 Delphi 中的函数返回对象而不导致访问冲突?

    我有一个返回 TStringList 的 delphi 函数 但是当我返回一个值并尝试使用它时 我收到一个访问冲突错误 即 myStringList FuncStringList myStringList Items Count lt Th
  • 交换 ms-sql 表

    我想以尽可能最好的方式交换到桌子 我有一个 IpToCountry 表 并根据导入的外部 CSV 文件每周创建一个新表 我发现进行切换的最快方法是执行以下操作 sp rename IpToCountry IpToCountryOld go
  • 在SQL中,如何通过查找与某一列相等的所有行来更新表的每一行,然后将另一列设置为彼此相等

    所以基本上这就是伪代码 但我不知道如何在 SQL 中执行此操作 请帮忙 for each row in table1 loop through each row in table 2 if table1 s row column 1 tab
  • Delphi 流畅的界面

    使用上有什么优点和缺点流畅的界面 http en wikipedia org wiki Fluent interface在德尔福 流畅的界面应该会增加可读性 但我对此有点怀疑one包含很多链式方法的长 LOC 是否存在编译器问题 是否存在任
  • MySQL 跨表计数(*) 查询帮助

    SELECT name COUNT AS count FROM t1 t2 WHERE t2 id t1 id GROUP BY t2 id 我想从 t1 获取名称以及 t2 中 id 与 t1 相同的行数 到目前为止我已经得到了上面的内容
  • 有没有办法在插入查询中执行另一个查询?

    好的 这是我的查询 我刚刚添加了 ACCOUNTID 和 accountID 部分 这显然不起作用 INSERT INTO Leads LEADID CREATEUSER CREATEDATE FIRSTNAME MODIFYDATE AC
  • 数据库级别的别名列名 [MySQL]

    别名 可能是错误的词 因为它是在将列 表名称作为查询中的其他名称引用的上下文中使用的 我感兴趣的是是否有一种方法可以在数据库中为列指定两个名称 如果我要打印这样的表格 它看起来会是这样的 mysql gt SELECT FROM User
  • JDBC 时间戳和日期 GMT 问题

    我有一个 JDBC 日期列 如果我使用 getDate 则会得到 date 仅部分2009 年 10 月 2 日但如果我使用 getTimestamp 我会得到完整的 date 2009 年 10 月 2 日 13 56 78 890 这正
  • 通过Java从MySQL中获取大量记录

    有一个 MySQL 表 服务器上的用户 它有 28 行和 100 万条记录 也可能会增加 我想从这个表中获取所有行 对它们进行一些操作 然后将它们添加到 MongoDB 中 我知道通过简单的 从用户中选择 操作来检索这些记录将花费大量时间
  • Oracle - 获取星期几

    今天是星期二 为什么当我运行这个 SQL 语句时 它说今天不是星期二 SELECT CASE WHEN TO CHAR sysdate Day Tuesday THEN Its Tuesday ELSE Its Not Tuesday EN

随机推荐

  • DialogFragment 中未调用 OnCancelListener

    我有一个简单的AlertDialog显示一些项目的列表 单击其中一个项目后 所单击的项目将传回封闭的项目Activity 我还想在用户取消对话框时执行一些默认处理 使用返回键 更具体地说 在这种情况下 我想将空字符串传递给活动 但是 如果我
  • 在另一个用户上下文中执行代码

    我有一个应用程序 其清单需要以管理员身份运行 但该应用程序的一部分是使用 WNetAddConnection2 映射驱动器 我认为由于凭据等原因 它需要在正常用户上下文中运行 有没有办法执行此操作普通用户上下文中的一些代码 无需创建单独的进
  • 在 CentOS 上安装 psycopg2 时遇到问题

    我正在尝试在 CentOS 上安装 psycopg2 我遵循了这方面的所有内容tutorial http thebuild com blog 2009 10 17 wordpress to djangopostgresql part 3 i
  • 如何使用多个索引从 NumPy 数组中获取值

    我有一个 NumPy 数组 如下所示 arr np array 100 10 200 42 4 14 89 00 34 55 1 12 如何通过索引从该数组中获取多个值 例如 如何获取索引位置1 4 5处的值 我正在尝试这样的事情 这是不正
  • 使用资源设置窗口背景颜色

    我需要使用资源来设置 WPF 应用程序中主窗口的颜色 由于资源声明位于窗口声明之后 我正在导入资源字典 因此我无法使用Background财产在Window目的 所以 我想我应该这样设置背景
  • 如何使用 LAG() 忽略 BigQuery 中的空值?

    使用时LAG 在 BigQuery 标准 SQL 中 https cloud google com bigquery docs reference standard sql functions and operators 如何跳过NULL值
  • 位置固定元素

    我真的被 HTML5 的一个小问题困扰了 我只是想定位一个固定元素 我有一个 jpg 作为标题 在下面我有一个名为 menu 的 div 其中包含导航 我一直在尝试通过 jss 和许多 css 规则使这个 div 菜单固定 因为当我向下滚动
  • 在 R 中重写这个列表理解

    gt gt gt x y for x y in zip range 3 1 11 111 0 11 222 不是这样的 gt data frame 0 2 c 1 11 111 X0 2 c 1 11 111 1 0 1 2 1 11 3
  • MassTransit 与 RabbitMQ:消息何时移至错误队列

    我正在使用 RabbitMQ 版本 3 0 2 我在错误队列中看到接近 1000 条消息 我想知道 消息在什么时候被移至错误队列 有没有办法知道为什么某个消息被移动到错误队列 有什么方法可以将消息从错误队列移动到正常队列吗 谢谢 a 无法反
  • 为什么我应该在这个程序中使用 fflush(stdin) ?

    我知道它是用来清理键盘缓冲区的 但是我不明白何时 为什么需要使用它或者我是否真的需要 例如 在我为班级编写的这段代码中 只有当我输入fflush stdin 之后立即进入主函数while 我只知道这一点 因为教授在我向他展示错误后告诉我这样
  • Eclipse 隐形编辑器

    我有日食朱诺 我不知道如何 但我在 Eclipse 中的编辑器现在是 隐形的 我所说的不可见是指编辑器窗格不在可见窗口中 我不是 Eclipse 的新手 我知道您可以最小化编辑器或最大化不同的面板 但事实并非如此 编辑器所在的空白区域甚至没
  • @import 与 #import - iOS 7

    我正在尝试一些新的 iOS 7 功能 并使用 WWDC 视频 在 iOS 上实现引人入胜的 UI 中讨论的一些图像效果 为了在会话的源代码中产生模糊效果 UIImage通过导入 UIKit 的类别进行扩展 如下所示 import UIKit
  • 如何借用字段进行序列化但在反序列化时创建它?

    我有一个这样的结构 derive Serialize Deserialize struct Thing pub small header Header pub big body Body 我想把这个连载Thing通过网络发送 我已经有一个B
  • 在 Eclipse 文本编辑器中,如何将段落重新格式化/填充/对齐为 80 个字符宽?

    在 Eclipse 中编辑文本文件 例如 README 文件 时 我还没有找到一种方法让编辑器重新格式化文本段落 以便它们适合合理的宽度 通常为 80 个字符 这看起来应该是一件很平常想做的事情 但是我还没有找到 有人可以帮忙吗 请注意 我
  • Android - 两个设备之间的通信

    安装在两台设备上的 Android 应用程序相互通信的最佳方式是什么 设备可以直接连接而不使用短信吗 根据您的要求和设置 您有多种选择 如果您的设备彼此距离非常近 最多约 10 米 您可以按照 Derek 的建议使用蓝牙进行通信 如果您的设
  • jQuery - 等待函数返回值

    我有一个 jquery 函数 用于使用 ajax 请求发送电子邮件 function sendMail from to subject message var datastr from from to to subject subject
  • Java 中 PKCS#5 PBKDF1 的算法名称是什么?

    我在使用密码学方面有几个问题 我正在使用 AES 问题一 我正在尝试使用SecretKeyFactory班级在 我正在尝试获取与 PBKDF1 PKCS 5 相关的实例 我是密码学新手 我在网上尝试过 但找不到任何此类算法 确实支持 我想要
  • 脚本文件与命令行:rsync 和 --exclude

    我有一个简单的测试 bash 脚本 如下所示 bin bash cmd rsync rv exclude dir new cmd execute command 当我运行脚本时 它还会复制以 尽管我本想排除他们 当我直接从命令行运行相同的
  • 如何通过滑动动画以编程方式在 FlipView 中导航

    Windows 开发中心声明UseTouchAnimationsForAllNavigation财产 XAML FlipView 控件支持三种导航模式 基于触摸 基于按钮和程序化 当用户通过触摸导航时 FlipView 项目会平滑地滚动到视
  • sql注入场景中格式化函数与参数?

    我知道 sql 语句中参数的使用 但出于好奇 使用 Format 函数来防止 sql 注入而不是使用参数是安全的 像这个样本 sCustomer string begin AdoSql CommandText Format Select S