Rails ActiveRecord sanitize_sql 替换 ? 在字符串中

菲尔

我有一个由受信任的管理员编写的纯 SQL 查询,该查询将在 Rails (4.2) 应用程序中运行。我正在清理它ActiveRecord::Base.send(:sanitize_sql, ...)以允许用户输入作为条件,使用?绑定变量字符。代码必须允许任意 SQL,所以我对为什么这不是 Rails 方式等的论点不感兴趣。

问题是,如果?没有底层replace_bind_variables方法替换?结果中的预期文字,我就无法包含在 SQL 的结果字段中

例如,一个简单的查询是:

select 'http://www.google.com?q=' || res from some_table where a = ?;

消毒:

ActiveRecord::Base.send(:sanitize_sql, [sql, 'not me'], :some_table)

清理失败,因为?URL 中的 被替换为用于条件的数据,导致异常:

ActiveRecord::PreparedStatementInvalid: wrong number of bind variables (1 for 2)

问题是,是否sanitize_sql或某些变体允许?在查询中包含文字字符,以便它们不被替换?有什么办法可以逃避他们吗?

菲尔

最后,我通读了 ActiveRecord 源代码,如果没有大量代码更改,我无法确定处理这种情况的方法。似乎没有办法转义?字符。

为了解决这个查询,我最终使用 SQLchr()函数生成一个字符,该字符将通过 santization 步骤原封不动:

select 'http://www.google.com' || chr(63) || 'q=' || res from some_table where a = ?;

ASCII 字符 63 是?.

虽然不是一个完美的解决方案,但我至少可以将这个 SQL 查询输入系统,而无需进行大量代码更改。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

替换SQL Server中的字符串

来自分类Dev

SQL:替换字符串中的特定字符

来自分类Dev

SQL替换字符串中的多个不同字符

来自分类Dev

SQL函数替换字符串中的许多字符

来自分类Dev

Rails Activerecord:将jsonb属性读取为字符串

来自分类Dev

Rails,ActiveRecord,PostgreSQL使用正则表达式在字符串中搜索单词

来自分类Dev

如何用sed替换SQL文件中的字符串

来自分类Dev

使用Python在SQL查询中的字符串替换

来自分类Dev

在proc sql中替换宏变量的字符串

来自分类Dev

在SQL中替换刚刚开始的字符串

来自分类Dev

用值列表替换字符串中的模式(SQL)

来自分类Dev

替换SQL Server中的某些字符串

来自分类Dev

在SQL字符串中替换时间戳占位符

来自分类Dev

在proc sql中替换宏变量的字符串

来自分类Dev

在SQL中替换刚刚开始的字符串

来自分类Dev

SQL Server 仅替换字符串中的缩写

来自分类Dev

用常量日期字符串替换 SQL 字符串中的静态子字符串

来自分类Dev

Ruby on Rails-删除/替换字符串中的某些字符

来自分类Dev

Rails中的ActiveRecord查询

来自分类Dev

Ruby中的条件正则表达式字符串替换(在Rails上)

来自分类Dev

如何强制Rails ActiveRecord字符串列仅接受字符串?

来自分类Dev

在字符串中替换\“

来自分类Dev

在SQL中替换字符串中第一次出现的子字符串

来自分类Dev

SQL Server:不使用临时表替换字符串中与char不同的字符

来自分类Dev

SQL Server:在指定范围内替换字符串中的字符

来自分类Dev

搜索字符串中的字符并将其替换为空格 T-SQL

来自分类Dev

如何用存储在 SQL Server 中不同表中的值替换 XML 中的字符串?

来自分类Dev

Rails 4中的ActiveRecord :: AssociationTypeMismatch

来自分类Dev

Rails中的ActiveRecord回滚

Related 相关文章

  1. 1

    替换SQL Server中的字符串

  2. 2

    SQL:替换字符串中的特定字符

  3. 3

    SQL替换字符串中的多个不同字符

  4. 4

    SQL函数替换字符串中的许多字符

  5. 5

    Rails Activerecord:将jsonb属性读取为字符串

  6. 6

    Rails,ActiveRecord,PostgreSQL使用正则表达式在字符串中搜索单词

  7. 7

    如何用sed替换SQL文件中的字符串

  8. 8

    使用Python在SQL查询中的字符串替换

  9. 9

    在proc sql中替换宏变量的字符串

  10. 10

    在SQL中替换刚刚开始的字符串

  11. 11

    用值列表替换字符串中的模式(SQL)

  12. 12

    替换SQL Server中的某些字符串

  13. 13

    在SQL字符串中替换时间戳占位符

  14. 14

    在proc sql中替换宏变量的字符串

  15. 15

    在SQL中替换刚刚开始的字符串

  16. 16

    SQL Server 仅替换字符串中的缩写

  17. 17

    用常量日期字符串替换 SQL 字符串中的静态子字符串

  18. 18

    Ruby on Rails-删除/替换字符串中的某些字符

  19. 19

    Rails中的ActiveRecord查询

  20. 20

    Ruby中的条件正则表达式字符串替换(在Rails上)

  21. 21

    如何强制Rails ActiveRecord字符串列仅接受字符串?

  22. 22

    在字符串中替换\“

  23. 23

    在SQL中替换字符串中第一次出现的子字符串

  24. 24

    SQL Server:不使用临时表替换字符串中与char不同的字符

  25. 25

    SQL Server:在指定范围内替换字符串中的字符

  26. 26

    搜索字符串中的字符并将其替换为空格 T-SQL

  27. 27

    如何用存储在 SQL Server 中不同表中的值替换 XML 中的字符串?

  28. 28

    Rails 4中的ActiveRecord :: AssociationTypeMismatch

  29. 29

    Rails中的ActiveRecord回滚

热门标签

归档