角度安全 - 在开发者控制台中更改值

时间:2016-12-07 11:56:49

标签: angularjs security

我正在创建一个Angular 1 SPA。某些控件仅对具有特定权限的用户可见。这基于服务器api调用设置的范围变量。

我想到如果我可以通过浏览器开发控制台访问这些变量,我可以更改它们的值。

我试过这个例子:

angular.element($0).scope().$parent.myUserInfo.accessType = "admin"
angular.element($0).scope().$apply()

果然,即使我没有以管理员身份登录,也会在页面上弹出管理控件。是否有最好的做法可以阻止这种情况,还是我完全错了?

2 个答案:

答案 0 :(得分:2)

验证始终必须在服务器端进行

我不知道您要做什么,但如果用户与某些webService / Rest API等进行交互......服务器应该禁止此类交互。

如果范围的accessType属性只是一种让您知道应该向用户显示哪个UI,并且服务器正确处理了身份验证/会话机制的方法,那应该不是问题

但是,您不能禁止用户使用开发控制台,因此您可以更好地正确处理身份验证。

答案 1 :(得分:1)

我不确定是否有办法保护$ scope中的值。

但是由于JavaScript是在客户端执行的,因此用户可以修改所述代码,我总是会在服务器端验证权限。然后,如果用户启用管理员控制客户端,因为他们无权使用api调用,这无关紧要。