我写了一个小的AngularJS应用程序。我正在使用变量:
$scope.IsAdmin = boolean
我的同事发现,我们可以通过调试器打开Google Chromes开发者控制台并进入JS代码查看代码,然后在控制台上执行以下操作:
$scope.IsAdmin = true;
之后变量被修改,他可以在应用程序中做任何他想做的事。
这是AngularJS的一般吗?你在现实世界的应用程序中做了什么,以防止编辑$ scope变量?
BR Yavuz的
答案 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