使用正则表达式和转义的 MongoID 查询
MongoID Query with Regex and escaping
我想知道是否有必要在使用 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 的正则表达式引擎会用它做什么。
我想知道是否有必要在使用 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 的正则表达式引擎会用它做什么。