Angular Js安全问题基于角色的授权

时间:2014-09-10 14:53:23

标签: angularjs security authorization user-roles client-side-scripting

我正在Angular为我的公司创建一个新的企业应用程序。我对角度感到非常兴奋,但在客户端处理角色对我来说并不适合。

基本上我在用户登录时和用户可以查看页面之前保存令牌,授权请求被发送到服务器以获取基于令牌的角色和用户详细信息。

授权后,将请求获取页面数据到服务器,返回整个数据,而不管用户的角色如何,之后我根据角色使用ng-switch和渲染模板。

现在的问题是我试图在客户端显示和隐藏数据,因此在收到用户信息后,我必须将角色保留在客户端的任何位置的某个Scope变量或本地存储中。但我的观点是,如果我将其保留在客户端,我可以非常轻松地更改角色并访问我想要的任何数据。

所以我应该假设Angular不适合我的应用程序,我试图根据服务器的角色在客户端显示数据,因为我觉得如果用户可以看到你的逻辑和数据,他显然可以玩用它。

这是我的观点

   <div ng-switch="User.data.Role">
       <div ng-switch-when="Admin">
            <h1>hello you are seeing your dashboard Admin</h1>
        </div>

        <div ng-switch-when="Manager">
            <h1>hello you are seeing your dashboard Manager</h1>
        </div>
    </div>

以下是我在Controller中填写用户变量的方法

app.controller('dashoBoardController',  ['$scope','UserService', function ($scope, UserService) {

    $scope.authentication = UserService.authentication;
    $scope.User = UserService.fillAuthData();
    console.log($scope.User);
    $scope.Greeting = "Welcome! to your Dashboard";



}]);

这是服务方法

   var _fillAuthData = function () {

        var authData = SessionService.get('user');

        if (authData) {
            _authentication.isAuth = true;
            _authentication.data = authData;

        }

        console.log(_authentication);
        return _authentication;
    }

会话服务是基于令牌从服务器获取用户数据。 正如您所看到的,因为视图是如此描述性的,因此更改authData中的角色并不是什么大问题。

如果有解决方法,请帮助我。我真的很想在Angular这个项目。

2 个答案:

答案 0 :(得分:1)

如果Web服务(在服务器上运行)向客户端返回经过身份验证的用户无权访问的数据,则Web服务(服务器端)存在安全漏洞。无论您决定选择哪个客户端框架,都无法修复该客户端/浏览器端。对于您想在浏览器中执行的任何操作,AngularJS可能都很好,但您的Web服务已损坏。

答案 1 :(得分:0)

我同意nomve,服务器端的安全性不是问题。服务器端的安全性应始终是安全的最后一道门,并且应始终谨慎实施。

但是,即使没有从服务器中提取数据,能够破解客户端上的角色并查看用户无法看到的界面也不是最好的体验。

每次远程检查角色并且不在本地存储角色可以解决问题,但需要花费。是否有一种本地方式来加密角色信息并使客户端的角色更难攻击?