【问题标题】:JavaScript app permission checkJavaScript 应用权限检查
【发布时间】:2016-06-19 04:11:03
【问题描述】:

我目前正在构建一个 JavaScript,其中包含一些只能由特定用户组访问的区域 - 假设他们购买了产品并可以在应用程序中进入产品视图。 (一切都发生在同一页面上)。

现在我的方法如下:

// 发生了一些请求,下一个组件即将被加载 ...

$.get("/api/permission/something", function(result){ // <-- Check whether the user has or has not the permission to access that component
    if(result === "permission granted"){ // <-- this would be the check whether its ok or not to access that component - but this value can be changed manually if someone really wants to (debugger via inspector etc)
        // permission ok
    }
});

因此,据我所知,这基本上是一种易受攻击的方法。我目前尽可能保持“安全”的解决方案是检查用户是否有权进入其中的每个后续请求 - 最终在某个时候将他踢出去。

这里还有其他方法可以应用吗?

【问题讨论】:

  • permission ok 块中发生了什么?是来自服务器的一些内容还是客户端的一些内容(比如显示一个 html 元素)?
  • 这里的模式是什么意思?你想要一个通用的代码,这样你就不必在响应回调中写result === "permission granted"了吗?
  • @georg 我正在用户视图中加载一个新组件 - 所以他基本上可以访问应用程序的另一个级别。在那里他可以做更多的事情。
  • @AmmarHasan 我可能在那里用了不好的措辞。我不需要自动化模式。我只是在为这个问题寻找最安全的解决方案
  • 你能控制api本身,也就是说你可以在没有权限的情况下从api返回一个自定义的http代码吗?

标签: javascript security permissions


【解决方案1】:

当您说“一切都发生在同一页面上”时,我假设您正在谈论单页应用程序。这意味着您可以通过加载了 XHR 的应用程序端点获取您的内容。

这里有两种选择: - 您的 api 调用应返回有关尝试接收数据的正确状态代码 - 您的 api 返回的每个对象也应该具有您的用户被允许的权限。例如

"permisssions":{
"view":true,
"delete":false
}

【讨论】:

  • 我知道你从哪里来,但难道不能用调试器来操纵这些权限对象吗?
猜你喜欢
  • 2010-12-24
  • 1970-01-01
  • 1970-01-01
  • 2017-09-26
  • 1970-01-01
  • 2016-07-22
  • 2012-06-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多