在id取记录后放〜

时间:2015-11-24 07:59:39

标签: ruby-on-rails ruby rails-activerecord

如果我们有一个Active Record数据库说Users

User.find(id)按预期工作:

User.find(11)


但User.find('id~')

也是如此

User.find('11~')


也是User.find('id~gibberish')

User.find('11~asdfasdf')


这是ActiveRecord的漏洞还是漏洞?
我如何妥善处理此类请求?

1 个答案:

答案 0 :(得分:4)

这应该有助于澄清一些问题,它不是ActiveRecord,它是您所见过的Ruby to_i方法。

2.2.1 :001 > '11'.to_i
 => 11
2.2.1 :002 > '11~'.to_i
 => 11
2.2.1 :003 > '11~gibberish'.to_i
 => 11

这不是漏洞也不是漏洞。如果你担心这样的输入,我会问一个你认为可能会对你造成伤害的例子。

此外,如果您想要超级防守,请使用Integer(

2.2.1 :004 > Integer('11~gibberish')
  ArgumentError: invalid value for Integer(): "11~gibberish"
2.2.1 :005 > Integer('11')
  => 11