angularjs - 启用生产模式后,什么会阻止从浏览器控制台访问 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() ???
解决方案
最后,您交付要在客户端中运行的代码。因此,总会有代码在您的影响下交付给关注点,知道自己在做什么的人可以检查这些代码。
如果您担心安全性,则不应依赖不可见的客户端代码。增加代码的模糊性不仅不能使代码更安全,有时甚至会使情况变得更糟。唯一可以安全运行与安全相关的任务的地方是在服务器上,而不是在客户端上,无论您如何混淆它。
如果您担心代码的知识产权,最好的办法(如果有的话)是使用某种代码混淆。这至少会增加对代码进行反向工程所需的工作量。
推荐阅读
- c++ - 为什么它是使用 GCC 的模棱两可的函数调用?模板扣除失败?
- django - 使用实例编辑 django 表单总是加载空表单字段
- wordpress - wordpress 网站上上传的图片未显示在移动设备上
- css - 动画名称属性中的“足够”和“太多”值是什么意思?
- sql-server - 将 CAST、CONCAT 和 COLLATE 与 LEFT OUTER JOIN 结合使用
- node.js - Angular 7 e2e 连接 ETIMEDOUT,无法建立隧道套接字
- java - restAssured 发送请求的两种方式有什么区别?
- c# - 在 WPF MVVM 应用程序中的多个 ViewModel 之间传递图像/数据
- php - 如何将数字的字符串值转换为锚标签内的电话格式?
- python - 如何在正则表达式中为一组条件定义量词?