我知道我们可以使用 batarang
访问范围变量( Chrome 扩展)和 angular.element(document.querySelector('selector')).scope()
我能够在 angular.io 中访问范围、 Controller , angularjs.org
但是我遇到了一个 angularJs 网站( www.paytm.com ),它能够阻止我访问控制台、 Controller 等中的范围变量。
最佳答案
我无法发表评论,因为我没有足够的声誉,但即使我无法回答你的第一个问题,我也可以对其他两个问题提供一些见解:
- Even if I block, is there any way that users may access the scope variables?
是的。每次在客户端机器上运行应用程序代码时,都可以访问有关正在运行的内容的信息。这适用于在客户端运行的每个代码。
虽然您可以尝试让恶意用户更难发现数据,但您无法真正安全地防止所有伤害。
在 angularjs 应用程序的特定情况下,请记住您的代码可以从浏览器访问并且任何用户都可以使用它(即使它被捆绑和缩小!)。因此,逆向工程应用程序并在受控环境中运行它不会太难。
- Will I have any extra security if I block users from accessing scope data?
嗯,这是有争议的。正如我在 2 中解释的那样,仍然可以访问您的范围变量,只是更难。我认为这里真正的问题应该是:“我是否关心是否有人可以访问我的范围变量?”
这个问题的答案应该始终是一个强调的“不”。您在客户端掌握了哪些明智的信息?它应该在那里吗?请记住,每个合理的信息都应该加密存储,并且只能在加密通信中通过网络传递。如果客户端有一些你绝对不允许访问的逻辑,它应该在服务器端。这就是您可能会发现的大多数合理信息问题的答案。
TLDR:人们仍然可以访问您的范围。你应该设计你的应用程序,这样你就不必关心它了。
关于控制台中的 AngularJs 范围变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29799494/