使用params值填充表单是否安全?

时间:2015-06-09 12:13:38

标签: ruby-on-rails ruby-on-rails-4

我正在使用表单来过滤没有链接到AR对象的字段的记录。提交表单时,我想显示记录并使用先前输入的值填充表单,以便用户可以看到过滤参数。 表格示例:

 = form_tag businesses_path, method: 'get' do
      .field
        = label_tag :title, 'Title'
        = text_field_tag :title, params[:title]
        = button_tag do
            'Submit'

我正在考虑使用params填充表单输入但不确定它是否安全?或者可能有更好的解决方案?

3 个答案:

答案 0 :(得分:1)

由于我们使用Rails处理RESTful接口,因此params hash本质上是前端(浏览器)和后端之间消息中的数据。它用于在后端用户前端和控制器之间中继数据。 params hash是RoR中最重要和最通用的工具之一。

来自Rails指南:http://guides.rubyonrails.org/action_controller_overview.html#hash-and-array-parameters

  

您可能希望访问用户发送的数据或控制器操作中的其他参数。 Web应用程序中有两种可能的参数。第一个是作为URL的一部分发送的参数,称为查询字符串参数。查询字符串是“?”之后的所有内容在URL中。 第二种类型的参数通常称为POST数据。此信息通常来自用户填写的HTML表单。它被称为POST数据,因为它只能作为HTTP POST请求的一部分发送。 Rails没有对查询字符串参数和POST参数进行任何区分,并且两者都可以在控制器的params哈希中使用:

所以使用params哈希;这是一个缓存用户输入并重新显示它的声音方法,就像你的问题一样。

<强>买者

当然,如果您是从哈希而不是数据库存储本身进行显示,则可能会遇到数据同步问题。但就您的具体问题而言,我会说使用params没有第二个想法的哈希。

答案 1 :(得分:0)

绝对没问题。 Rails将清理它自己的任何东西。当您打印&#34; raw&#34;时,请不要致电params[:title].html_safe用户输入。

答案 2 :(得分:0)

您可以将该参数存储在各个控制器操作中的实例变量中,例如在控制器中流动。

def test_action
  @title = params[:title]
end

然后将@title设置为字段值为

   = text_field_tag :title, @title