【发布时间】:2014-06-05 17:32:00
【问题描述】:
Customer.find(:all, :select => 'id', :order => 'updated_at DESC', :readonly => true, :conditions => { :status_id => Customer.id_for_status(params[:id].to_sym) }, :offset => offset, :limit => 30).collect(&:id)
以上是我的查询,我收到类似警告
Symbol conversion from unsafe string (parameter value) near line 33: params[:id].to_sym
这是拒绝服务的警告。有人知道如何解决此警告吗?
提前致谢
【问题讨论】:
-
方法
id_for_status可以改成接受字符串而不是符号? -
只是一个有根据的猜测:尝试截断到一些合理的最大长度:
params[:id][0...20].to_sym。我的猜测是,rails 试图保护您不使用大量符号实习生空间(一旦使用符号,保存其字符的空间就永远不会释放)。如果这不起作用,则必须在符号转换之前验证参数。 -
感谢@Baldrick,它的作品
标签: ruby-on-rails ruby-on-rails-3 denial-of-service