'@ class_object_instance.save!(:validate => false)'方法有多危险?

时间:2011-08-15 23:47:54

标签: ruby-on-rails ruby ruby-on-rails-3 validation

我正在使用Ruby on Rails 3.0.9,我想知道“多少可能是危险的”使用以下语句来保存数据库中的记录:

@user.save!(:validate => false)

那就是会发生什么?例如,恶意用户可以在数据库中破解某些东西(例如:设置一些不允许的值)吗?

注意:我主要是指上述代码的:validate => false部分,可以跳过验证过程。

1 个答案:

答案 0 :(得分:1)

恶意用户可以“破解某些东西”吗?那要看。 :validate => false禁用类@user所属的任何验证逻辑。如果您已经以正常方式批量分配了要更新的参数,那么仍然可以获得所有的转义,这将保护您免受SQL注入类型攻击。

但是,如果应用程序的完整性取决于@user有效的内容,那么您可能会遇到麻烦 - 考虑用户设置自己的帐户余额,免费添加额外订阅,更改到期日期等...

我不确定你的应用程序是做什么的。查看相关的验证逻辑,质疑它为什么存在,然后问问自己,如果它被禁用并且有什么东西会破坏会发生什么。一般来说:validate => false不是一个好主意。