我无法找到任何明确的答案。 我有一个设计用户模型,我添加了一个' admin'属性是一个布尔值,默认为false。目前,我必须转到控制台并手动将属性更改为true,以便为用户提供此管理员状态。
我的问题是,这有多安全?有没有人可以在不访问服务器(目前是我的电脑)的情况下更改自己用户的状态? 一旦我将网站投入生产,安全性会受到影响吗?登录,注册或更新时,admin属性不是允许的参数。
我问我想为自己添加个人信息中心,以查看,编辑或删除网站投入生产时可能需要的任何内容。
答案 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?