我正在使用Ruby on Rails 3.0.9,我想知道“多少可能是危险的”使用以下语句来保存数据库中的记录:
@user.save!(:validate => false)
那就是会发生什么?例如,恶意用户可以在数据库中破解某些东西(例如:设置一些不允许的值)吗?
注意:我主要是指上述代码的:validate => false
部分,可以跳过验证过程。
答案 0 :(得分:1)
恶意用户可以“破解某些东西”吗?那要看。 :validate => false
禁用类@user
所属的任何验证逻辑。如果您已经以正常方式批量分配了要更新的参数,那么仍然可以获得所有的转义,这将保护您免受SQL注入类型攻击。
但是,如果应用程序的完整性取决于@user
有效的内容,那么您可能会遇到麻烦 - 考虑用户设置自己的帐户余额,免费添加额外订阅,更改到期日期等...
我不确定你的应用程序是做什么的。查看相关的验证逻辑,质疑它为什么存在,然后问问自己,如果它被禁用并且有什么东西会破坏会发生什么。一般来说:validate => false
不是一个好主意。