user.role=REGULAR
)。
有没有办法阻止用户打开萤火虫并更改user.role=ADMIN
?
例如,我看到代码显示了基于范围中值的选项卡,但我不确定如何防止用户更改该值(以及访问选项卡)。有没有一种模式可以解决这个问题?是否所有与访问相关的内容都需要直接来自Web服务/受保护的远程位置?
答案 0 :(得分:2)
无法做到这一点。你的设计有一个根本问题;它依赖于客户端验证。
您永远不会信任来自客户端的任何信息。您真正需要验证或验证的任何内容都必须在服务器端完成,特别是与安全相关的事项。
最重要的规则是,一旦它离开服务器并点击客户端,它就会失控。假设它被妥协,假设它不值得信任,并假设你必须检查一切。
在您的情况下,如果用户不是管理员,则甚至不向他们提供管理员选项。
答案 1 :(得分:1)
好吧,你可以尝试隐藏对象内部的对象,或者在支持它的浏览器中使用Object.freeze
,但是没有解决代码被发送到客户端并在客户端执行的事实。即使有一种防止修改的简单方法(也没有),客户端可能在Fiddler之前修改了有效载荷,或者在它到达浏览器之前。
考虑到这一点,您无法信任客户端上的任何以进行访问/授权;您必须在服务器上验证这一点,否则您将面临安全漏洞/风险。