如何防范范围对象变化?

时间:2015-03-18 20:07:08

标签: javascript angularjs single-page-application

我是一个Angular noob。在我接管的应用程序中,范围中有一个对象定义了当前用户的角色(例如user.role=REGULAR)。

有没有办法阻止用户打开萤火虫并更改user.role=ADMIN

例如,我看到代码显示了基于范围中值的选项卡,但我不确定如何防止用户更改该值(以及访问选项卡)。有没有一种模式可以解决这个问题?是否所有与访问相关的内容都需要直接来自Web服务/受保护的远程位置?

2 个答案:

答案 0 :(得分:2)

无法做到这一点。你的设计有一个根本问题;它依赖于客户端验证。

永远不会信任来自客户端的任何信息。您真正需要验证或验证的任何内容都必须在服务器端完成,特别是与安全相关的事项。

最重要的规则是,一旦它离开服务器并点击客户端,它就会失控。假设它被妥协,假设它不值得信任,并假设你必须检查一切。

在您的情况下,如果用户不是管理员,则甚至不向他们提供管理员选项。

答案 1 :(得分:1)

好吧,你可以尝试隐藏对象内部的对象,或者在支持它的浏览器中使用Object.freeze,但是没有解决代码被发送到客户端并在客户端执行的事实。即使有一种防止修改的简单方法(也没有),客户端可能在Fiddler之前修改了有效载荷,或者在它到达浏览器之前。

考虑到这一点,您无法信任客户端上的任何以进行访问/授权;您必须在服务器上验证这一点,否则您将面临安全漏洞/风险。