我在AngularJS中有一个网页,我想在客户端本身执行一些验证。因此,我会比较$scope
的值并验证用户的事件。例如:
$scope.limit = 5;
$scope.reached = 5;
$scope.check = function () {
if ($scope.reached >= $scope.limit) {
alert("Sorry, limit reached.");
} else {
alert("Success!");
}
};
但是,在元素标签中选择元素,然后在控制台中运行此命令后,可以访问和更改$scope
:< / p>
angular.element($0).scope().limit = 100;
//or by running $scope.limit = 100; if you're using Batarang
成功运行此命令后,我将收到警告成功。我已经创建了一个用于测试目的的示例页面:http://keval5531.github.io/angular.html
那么,是否可以禁用对$scope
的访问或操作?我总是可以使用服务器进行验证,但我确信必须有一些方法来保持客户端验证的傻瓜。
编辑:我的意思是傻瓜式的,这需要用户更多的努力和专业知识来操纵发送的数据,而不仅仅是操纵DOM。
答案 0 :(得分:1)
您永远无法确保客户端的安全验证安全性。但回答你关于是否可以限制访问范围的具体问题 - 是的,在某种程度上(1.3+)。您可以通过disabling the debug info禁用batarang和其他插件使用的调试数据。使用scope()
访问器函数将不再附加在DOM元素上。这样做的目的不是为了提供安全,而是为了提高性能。保持服务器端验证足够强大,以阻止任何此类尝试。
.config(['$compileProvider', function ($compileProvider) {
$compileProvider.debugInfoEnabled(false);
}]);
但请注意,任何人都可以使用控制台的调试信息重新加载应用程序:
angular.reloadWithDebugInfo();