ruby - 如何在 Ruby 中插入或更新之前转义字符串

标签 ruby activerecord sql-injection mysql-real-escape-string

在 ruby​​ 中,ActiveRecord 不提供更新和插入 sql 的动态绑定(bind),当然我可以使用原始 sql,但是需要保持连接,所以我想知道是否有更简单的方法在执行之前转义更新或插入 sql像下面的代码:

ActiveRecord::Base.connection.insert(sql)

我想我可以用 gsub 写代码,但我知道是否有现成的方法来做。

最佳答案

在 Rails >= 3.2.5 中,以下对我有用:

evil_input = '"\';%#{}\"foo'
ActiveRecord::Base.connection.quote(evil_input)
=> "'\"'';%\#{}\\\"foo'"

关于ruby - 如何在 Ruby 中插入或更新之前转义字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4525558/

相关文章:

php - 尝试在 codeigniter 事件记录中附加(添加到)小时列

ruby-on-rails - Ruby - 两个集合的交集,它们是两个不同对象的属性

mysql - 在MySql存储过程中应该遵循哪种方法来防止SQL注入(inject)

php - mysqli准备语句,如何循环结果集

.net - 防止动态列名中的 SQL 注入(inject)

ruby - 如何在 Markdown 格式的 YARD 文档中插入项目符号 (<li>) 元素

ruby-on-rails - 为 has_many 或 habtm 动态创建 after_add 和 after_remove 回调?

ruby - 如何在 ruby​​ 中获取上个月的今天?

ruby - 来自方法的模块名称

javascript - 如何在 Rails 中正确传递 JSON