【发布时间】:2013-12-05 14:42:47
【问题描述】:
如果这是此问题的错误堆栈,请道歉。如果是这样,请引导我到正确的网站。
我有一个 Rails 应用程序,其中用户可以是以下三个角色之一的成员:user、admin 或 system。然而,我的 rails 应用程序基本上用作主干应用程序的 JSON 后端。所有客户端的繁重工作都是通过在资产管道中处理的咖啡脚本文件完成的。
现在,我通过在application.html.slim 级别创建的对象将一些用户属性输入到javascript 中。看起来像这样的东西:
APP.currentUser =
name: "#{@current_user.name}"
role: "#{@current_user.role}"
在我的主干应用程序的几个地方散布着这样的调用:
if APP.currentUser.role is 'admin'...
这似乎很不安全,因为任何有知识的人都可以打开一个开发控制台,将App.currentUser 的实例修改为admin,然后访问前端的管理功能。现在,rails 端足够聪明,可以检查并确保@current_user 可以在尝试执行这些功能之前执行这些功能,但似乎仍然应该有一种方法可以在前端防止这种情况发生,而无需发布角色进入javascript。
我是不是过于谨慎了,还是错过了什么?
【问题讨论】:
-
你过于谨慎了。用户是否可以在客户端启用“管理”内容并不重要,只要服务器不让它做任何事情。
标签: javascript ruby-on-rails security backbone.js coffeescript