gpt4 book ai didi

javascript - 基于 Rails 的 javascript 应用程序的安全性 : How do you verify permissions on a user within rendered javascript?

转载 作者:行者123 更新时间:2023-11-30 08:47:53 28 4
gpt4 key购买 nike

如果这是这个问题的错误堆栈,我们深表歉意。如果是这样,请将我引导至正确的站点。

我有一个 Rails 应用程序,其中用户可以是以下三个 Angular 色之一的成员:useradminsystem .然而,我的 Rails 应用程序基本上用作 Backbone 应用程序的 JSON 后端。所有客户端繁重的工作都是通过 coffeescript 文件完成的,这些文件在 Assets 管道中处理。

现在,我通过在 application.html.slim 级别创建的对象将一些用户属性传送到 javascript。看起来像这样的东西:

APP.currentUser = 
name: "#{@current_user.name}"
role: "#{@current_user.role}"

在我的主干应用程序的几个地方散布着这样的调用:

if APP.currentUser.role is 'admin'...

这看起来很不安全,因为任何有知识的人都可以打开开发控制台,将 App.currentUser 的实例修改为 admin,然后访问 admin前端的功能。现在,rails 端足够聪明,可以检查并确保 @current_user 可以在尝试执行这些功能之前执行这些功能,但似乎仍然应该有一种方法可以在前端防止这种情况发生结束,而不将 Angular 色发布到 javascript 中。

我是不是过于谨慎了,还是遗漏了什么?

最佳答案

好吧,我不认为你能做得比这更好。在我需要在我的 View 上引入操作权限的情况下,我曾经做过这样的事情。像这样:

在 Rails 后端:

def as_json(options={})
super(:include => {
:attributes_to_include
}
).merge({
:permissions=> {
:can_create => (user.can_create?),
:can_delete => (user.can_delete?),
:can_update => (user.can_update?)
}
})
end

在Backbone前端

if(@user.permissions.can_create)
# Display create view
if(@user.permissions.can_update)
# Display update view
.....

通常这是您能做的最好的。您不能在前端向用户隐藏 View ,除非整个页面从 Rails 后端加载并处理好 View 权限。当然,这与当今处理基于 Ajax 的 View 的方式相矛盾。

此外,您需要确保授权 Rails 后端上的操作。

关于javascript - 基于 Rails 的 javascript 应用程序的安全性 : How do you verify permissions on a user within rendered javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20384361/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com