这是正确的,我可以通过Google Chromes Developer Console更改AngularJSs $范围变量吗?

时间:2015-08-19 12:28:29

标签: javascript angularjs security google-chrome debugging

我写了一个小的AngularJS应用程序。我正在使用变量:

$scope.IsAdmin = boolean

我的同事发现,我们可以通过调试器打开Goog​​le Chromes开发者控制台并进入JS代码查看代码,然后在控制台上执行以下操作:

$scope.IsAdmin = true;

之后变量被修改,他可以在应用程序中做任何他想做的事。

这是AngularJS的一般吗?你在现实世界的应用程序中做了什么,以防止编辑$ scope变量?

BR Yavuz的

3 个答案:

答案 0 :(得分:4)

Javascript单页应用从不安全。从客户端发出的每个数据都应该由服务器验证。无论你有多大的帮助,总有一种工具可以预先验证代码。

关于您的问题 - Angular提供了在开发过程中直接更改范围属性以进行调试的功能。

如果要阻止调试选项,请执行以下操作:

angular.module('appModule', ['dependencies']
    .config(['$compileProvider', function($compileProvider) {
        $compileProvider.debugInfoEnabled(false);

    }]);

from the documentation说出debugInfoEnabled

  

调用此方法以启用/禁用各种调试运行时信息   在编译器中添加绑定信息和引用   DOM元素的当前范围。

答案 1 :(得分:1)

您可以隐藏内容并使用户更难以访问数据,但如果用户足够专注,他们将始终能够访问该数据。关键是对所有请求进行服务器端验证,以确认用户是否是他们所说的人。这将使用户无法使用其假管理员权限执行任何操作。

答案 2 :(得分:0)

通常我们会捆绑和缩小以防止生产中的最终用户调试和更改变量。这是一种最佳实践,其目的还在于减少资产的大小并减少页面加载时间。你可以阅读,例如那些博文:

https://blog.mariusschulz.com/2015/01/10/bundling-and-minification-an-introduction  https://blog.mariusschulz.com/2015/02/22/bundling-and-minifying-an-angularjs-application-with-asp-net-mvc