angularjs - 禁止访问$ scope并停止从控制台进行操作

时间:2015-06-10 19:25:12

标签: angularjs batarang

我在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。

1 个答案:

答案 0 :(得分:1)

您永远无法确保客户端的安全验证安全性。但回答你关于是否可以限制访问范围的具体问题 - 是的,在某种程度上(1.3+)。您可以通过disabling the debug info禁用batarang和其他插件使用的调试数据。使用scope()访问器函数将不再附加在DOM元素上。这样做的目的不是为了提供安全,而是为了提高性能。保持服务器端验证足够强大,以阻止任何此类尝试。

.config(['$compileProvider', function ($compileProvider) {
  $compileProvider.debugInfoEnabled(false);
}]);

但请注意,任何人都可以使用控制台的调试信息重新加载应用程序:

angular.reloadWithDebugInfo();