【问题标题】:Security issues of Angular's ng- attributes in HTML and mitigationHTML 中 Angular 的 ng- 属性的安全问题及缓解措施
【发布时间】:2014-01-08 09:56:20
【问题描述】:

我不确定在纯文本中看到这些指令是否会对我们的应用程序黑客造成任何特别的威胁。但如果没有别的可以清楚地看到我们的模型结构和功能。如果 Angular 在引导后将其删除,它至少会使其更难访问...

两个问题

  1. 是否可以在 Angular 应用程序增强后从标记中删除所有自定义 ng- 属性?该应用还能按预期工作吗?

  2. 是否可以使用 jQuery 在 DOM Ready 上动态添加 ng- 属性,然后按照 #1 删除它们?如果这需要手动引导应用程序,也可以吗?

通过#2 的可能性,我们可以以某种方式外部化应用程序配置,并且 HTML 标记将永远不会显示任何声明性指令(仅在配置-引导-删除之间的时间)。但如果用户禁用了 Javascript,至少不会有。

【问题讨论】:

    标签: javascript jquery angularjs twitter-bootstrap declarative


    【解决方案1】:

    如果客户端应该显示一些数据,那么您通过 Angular 公开的任何内容都必须以某种方式公开给客户端。如果您想拥有一个交互式客户端应用程序,那么它需要有某种形式的客户端模型和数据结构以及处理这些事情的代码。无论您是纯粹用 .js 文件中的过程代码来表达它们,还是将部分结构嵌入 HTML 标记中,都几乎没有什么区别。它不会让任何一开始就无法破解的东西变得更容易破解。

    【讨论】:

    • 我同意这一点,但我仍然相信偷一辆停着的、开门的、没有上锁的汽车比偷一辆上锁的汽车要诱人得多……不会你同意?如果您所说的都是真的,那么就不需要代码混淆工具了,对吗?他们不会阻止黑客攻击,但会更加困难。
    • 那么,请先定义“窃取”的内容。一辆汽车显然可以被盗。然而,这里没有什么明显可以被“偷走”的东西,否则就不会被偷走。
    • 这是一个类比。这不是关于窃取,而是关于业务规则的黑客攻击,从而试图破坏系统
    • 再说一次,有什么可以“打破”的?客户端代码永远不会被任何东西保护,无论你以何种方式打包它。而且客户端代码也不能以任何方式成为您的安全基础架构中的组件。唯一可能被“破坏(进入)”的是您的服务器端 API,您需要保护它以使其不会被破坏。无论如何,这与 Angular 无关,无论哪种方式都需要服务器端的安全性。
    • 有效点有效点...我只是在想这是否可能,但不是回答#1 或#2 是否可能,而是告诉我为什么它不相关。 即使它可能不相关,它仍然是可能的。 对吗?
    猜你喜欢
    • 2014-05-13
    • 2015-01-30
    • 2016-03-09
    • 1970-01-01
    • 1970-01-01
    • 2017-01-27
    • 1970-01-01
    • 2018-02-24
    • 1970-01-01
    相关资源
    最近更新 更多