ruby-on-rails - 使用正则表达式和转义进行 MongoID 查询

标签 ruby-on-rails regex mongodb mongoid

我想知道是否有必要在使用rails/mongoID的查询调用中转义正则表达式?

这是我当前的查询:

@model.where(nice_id_string: /#{params[:nice_id_string]}/i)

由于正则表达式,我现在不确定它是否不够安全。

我应该使用下面的代码还是 MongoID 自动转义查询调用?

@model.where(nice_id_string: /#{Regexp.escape(params[:nice_id_string])}/i)

最佳答案

当然你应该转义输入。考虑 params[:nice_id_string].*,您当前的查询将是:

@model.where(nice_id_string: /.*/i)

而你的第二个是:

@model.where(nice_id_string: /\.\*/i)

它们所做的事情非常不同,其中之一可能是您不想要的。态度足够恶劣的人可能会在您当前的版本中进行一些灾难性的回溯,我不确定 MongoDB/V8 的正则表达式引擎会对此做什么。

关于ruby-on-rails - 使用正则表达式和转义进行 MongoID 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31657959/

相关文章:

ruby-on-rails - Rails + Zurb - 如何确定 CSS 的优先级

mongodb - Mongoose 将 Number 作为 Int32 或 double 插入,如何强制始终使用 double,就像 shell 一样

ruby-on-rails - 通过 Active Admin 使用 Carrierwave

android - NoMethodError(未定义方法 `permit!' 为 "":String):

javascript - JS-regex,我怎样才能将其变成一个replace()方法?

regex - 返回匹配 : regexp supported? 的逻辑向量

mysql - 用于选择字符串中多个值的正则表达式

mongodb - 直接从事件存储中读取或在读取端实现事件的副本

mongodb - 在 Docker 启动期间,我收到此消息 : "getting the final child' s pid from pipe caused "read init-p: connection reset by peer"

html - 在 Rails 应用程序中引导导航栏和按钮