首页 > 解决方案 > 启用生产模式后,什么会阻止从浏览器控制台访问 angular.element().injector()

问题描述

我在我的生产代码中这样做了

$compileProvider.debugInfoEnabled(false)
angular.reloadWithDebugInfo = angular.noop

由于上面的代码,当我在浏览器控制台中运行此脚本时

angular.element(document.body).scope() // output undefind

对于范围,它按预期工作但问题是,在浏览器控制台中不会阻止注入的服务

angular.element(document.body).injector().get('TestService')

它返回 TestService 实例,任何人都可以更新方法实现等。我们如何在生产模式下防止浏览器控制台出现 angular.element(document.body).injector() ???

标签: angularjsdeveloper-console

解决方案


最后,您交付要在客户端中运行的代码。因此,总会有代码在您的影响下交付给关注点,知道自己在做什么的人可以检查这些代码。

如果您担心安全性,则不应依赖不可见的客户端代码。增加代码的模糊性不仅不能使代码更安全,有时甚至会使情况变得更糟。唯一可以安全运行与安全相关的任务的地方是在服务器上,而不是在客户端上,无论您如何混淆它。

如果您担心代码的知识产权,最好的办法(如果有的话)是使用某种代码混淆。这至少会增加对代码进行反向工程所需的工作量。


推荐阅读