Rails CSRF对策用户编辑和更新

时间:2010-10-28 16:03:15

标签: ruby-on-rails security

我正在根据Ruby on Rails Guide在我的Rails应用上设置安全性。

我的理解是用户控制器中的'edit'方法(我用来呈现我的用户设置视图)应该只提交GET请求,并且'update'方法正在提交POST请求。但是,当我想验证不同方法的请求类型时,如下所示:

#UsersController
verify :method => :post, :only => [:update], :redirect_to => {:action => :show}

该应用不会保存对用户设置所做的任何更改。如果我将验证更改为

verify :method => :post, :only => [:update, :edit], :redirect_to => {:action => :show}

我甚至无法渲染设置视图。

StackOverflow通常很擅长教育我不太了解的领域,有谁知道会发生什么?

1 个答案:

答案 0 :(得分:1)

你很近,但稍微偏了一点。以下是七条RESTful路由,以及它们使用的方法:

  1. index:GET
  2. show:GET
  3. new:GET
  4. 创建:POST
  5. 编辑:GET
  6. 更新:PUT
  7. destroy:DELETE
  8. 如您所见,更新需要PUT。它正在创建使用POST。这应该解决它:

    verify :method => :put, :only => [:update], :redirect_to => {:action => :show}