【发布时间】:2012-06-27 14:42:13
【问题描述】:
在RailsCast 219 中,提供了以下代码来创建一个用于从表单来回传送数据的类,但没有任何 ActiveRecord 持久性:
class Message
include ActiveModel::Validations
attr_accessor :name, :email, :content
validates_presence_of :name
validates_format_of :email, :with => /^[-a-z0-9_+\.]+\@([-a-z0-9]+\.)+[a-z0-9]{2,4}$/i
validates_length_of :content, :maximum => 500
def initialize(attributes = {})
attributes.each do |name, value|
send("#{name}=", value)
end
end
end
我是 Ruby 新手,但 send("#{name}=", value) 似乎是在邀请攻击者
将任意值分配给任意字段。这是一个问题吗?一些评论者问similar questions,但没有回应。
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3 activemodel