【问题标题】:How do I secure this post request to Rails?我如何确保向 Rails 发送此发布请求?
【发布时间】:2011-06-13 00:19:13
【问题描述】:

我正在努力解决我的 AJAX 调用的安全问题。我有一个删除笔记的 jQuery post call。根据我的阅读,我似乎需要使用protect_from_forgery 来确保帖子来自有效用户。

这是我目前所拥有的

application_controller.rb

class ApplicationController < ActionController::Base
  protect_from_forgery
...

index.html

$.post('../delete_note',{id:$('#note_id').val()}, function(data) {

});

note_controller.rb

def delete_note
    y params
    render :text => "success"
end 

目前,发布请求由 Rails 运行,即使我没有发送任何安全令牌。我需要做些什么来确保通话安全?

我正在使用 Rails 3.0.1 和 devise 进行用户管理。

【问题讨论】:

    标签: ruby-on-rails ajax security csrf


    【解决方案1】:

    您可能希望确保用户已登录,在您的笔记控制器中使用类似:

    before_filter :authenticate_member!, :except => [:index]
    

    另外,检查用户是否有权删除笔记,为此您想使用像cancan这样的授权解决方案。

    【讨论】:

    • 感谢您的回答。如果我没有通过发布请求发送任何内容,如何对用户进行身份验证? Rails 是否只有随请求发送的数据?
    • 如果您使用的是devise,则身份验证存储在会话中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-28
    • 1970-01-01
    • 2014-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多