Ruby on rails。用户模型的admin属性有多安全?

时间:2016-01-19 17:33:09

标签: ruby-on-rails security devise admin

我无法找到任何明确的答案。 我有一个设计用户模型,我添加了一个' admin'属性是一个布尔值,默认为false。目前,我必须转到控制台并手动将属性更改为true,以便为用户提供此管理员状态。

我的问题是,这有多安全?有没有人可以在不访问服务器(目前是我的电脑)的情况下更改自己用户的状态? 一旦我将网站投入生产,安全性会受到影响吗?登录,注册或更新时,admin属性不是允许的参数。

我问我想为自己添加个人信息中心,以查看,编辑或删除网站投入生产时可能需要的任何内容。

3 个答案:

答案 0 :(得分:2)

如果您使用strong params,则仅当您允许从管理面板之外的任何操作设置此属性时,风险才会存在。

为了更安全,您可以使用attr_readonly,因此您只能在创建对象时设置此属性。

答案 1 :(得分:1)

考虑到设计,安全是最不可能出错的,除非Rails或Devise中的任何一个被破坏,这是不可能的。 您已经采取了足够的步骤,例如不允许admin参数,这对于几乎所有情况都应该足够了。 几个Rails应用程序,包括GitHub和Shopify,在没有安全问题的情况下已经这样做了(可能没有Devise,但这不是问题)。我自己使用Devise和admin标志,并且可以保证它足够安全。

答案 2 :(得分:0)

你有没有使用像RoleModel这样的东西?它将允许您以更易于管理的方式扩展到其他角色,而不是为每个角色向User添加属性。

无论哪种方式......除非您为他们提供更新该字段的方法,否则它应该是安全的。如果您想确保非管理员无法更新该字段,您可以随时向UsersController#update添加:

params[:user].delete(:admin) unless current_user.admin?