我想知道是否有必要在使用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/