繁体   English   中英

如何防止范围对象被更改?

[英]How to guard against scope objects getting changed?

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

有没有一种方法可以阻止用户打开Firebug和更改user.role=ADMIN

例如,我已经看到了显示基于范围中的值的选项卡的代码,但是我不确定如何阻止用户更改该值(以及访问选项卡)。 有没有解决的办法? 是否所有与访问相关的需求都直接来自Web服务/受保护的远程位置?

没有办法做到这一点 您的设计有一个基本问题; 它依赖于客户端验证。

永远无法相信客户提供的任何信息。 您真正想要验证或认证的任何事情都必须在服务器端完成,尤其是与安全性相关的事情。

最重要的规则是,一旦它离开服务器并命中了客户端,它便失去了控制。 假设它受到威胁,并假设它不值得信任,并假设您必须检查所有内容。

在您的情况下,如果用户不是管理员,则不要为其提供管理员选项。

好了,您可以尝试将对象隐藏在闭包内部或在支持该闭包的浏览器中使用Object.freeze ,但是无法避免将代码发送到客户端并在客户端上执行的事实。 即使有防止修改的万无一失的方法(没有),客户端也可以在Fiddler或其他内容中修改有效负载,然后再到达浏览器。

考虑到这一点,您不能信任客户端上的任何内容以进行访问/授权。 您必须在服务器上对此进行验证,否则会有安全漏洞/风险。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM