Ruby on rails Rails-防止Firebug/Developer工具黑客攻击

Ruby on rails Rails-防止Firebug/Developer工具黑客攻击,ruby-on-rails,Ruby On Rails,如果我打开Chrome Developer Tools并插入一个destroy链接,当它是一个RESTful应用程序时很容易做到,并且你知道路径,那么我可以在没有授权的情况下轻松地从数据库中删除内容。解决这个问题的最好办法是什么?是否将控制器操作的内容包装在CanCanCan风格的授权检查中 谢谢 认证 例如,gemdesigne提供了在控制器中检查身份验证的功能,或者您可以使用自己的解决方案进行检查。它可以帮助您避免来自未登录用户的请求 批准 或-为允许用户的操作设置规则的良好解决方案。您可以

如果我打开Chrome Developer Tools并插入一个destroy链接,当它是一个RESTful应用程序时很容易做到,并且你知道路径,那么我可以在没有授权的情况下轻松地从数据库中删除内容。解决这个问题的最好办法是什么?是否将控制器操作的内容包装在CanCanCan风格的授权检查中

谢谢

认证 例如,gemdesigne提供了在控制器中检查身份验证的功能,或者您可以使用自己的解决方案进行检查。它可以帮助您避免来自未登录用户的请求

批准 或-为允许用户的操作设置规则的良好解决方案。您可以使用此资源根据规则和操作控制对不同资源的访问

坎坎坎的例子

def delete
  @post = Post.find_by(id: params[:id])

  #authorize user to have an ability delete this post
  #this will raise a CanCan::AccessDenied exception if not allowed
  authorize! :destroy, @post 

  ... your destroy logic
end

阅读更多关于在控制器中授权的信息,它实际上非常简单。例如,在您的posts控制器中。在执行以下操作之前创建:

class PostsController < ApplicationController

  before_action :logged_in_user, only: [:create, :edit, :update, :destroy]
  before_action :correct_user, only: [:edit, :update, :destroy]

  def correct_user
    @post = Post.find_by(id: params[:id])
    unless current_user?(@post.user)
      redirect_to user_path(current_user)
    end
  end

  def logged_in_user
    unless logged_in?
      flash[:danger] = "Please log in"
      redirect_to login_url
    end
  end
end
如你所见。当您尝试删除帖子时,before_操作将启动并检查用户是否已登录。然后检查当前用户是否拥有帖子。只有当这两个条件都为真时,才会允许用户删除帖子,否则会重定向用户。以同样的方式处理其他需要授权的操作,如管理面板、销毁用户、更新帖子等

至于授权本身,您可以使用bcrypt自己实现,也可以使用为类似设计而设计的gem:


所有的安装说明都可以在他们的github页面上找到。

从服务器上拔出网络电缆。感谢您的回答,idej,但实际上我正在寻找更多关于实际实现的答案。您提到使用授权gem,但我实际应该使用什么代码?如果可以,我是否应该将销毁/更新操作代码放入CanCanCan中管理方法?或者有更好的方法吗?@DannySantos我在回答中添加了有用的链接和示例这就是我想要的,谢谢idej!我进一步挖掘了文档,找到了load_和authorize_resource方法,它将您的解决方案应用于每个操作。@DannySantos是的,如果您需要的话