为什么Angular2清理组件中的脚本标记?

时间:2017-04-17 15:02:36

标签: angular security xss

我完全理解,出于安全原因和防止XSS攻击,必须对用户输入进行清理: 清理文本字段或输入字段的输入。

但是,我很难理解为什么Angular会从组件模板中删除脚本元素。

就像在官方文档中写的那样:

  

模板中的HTML,属性和绑定表达式(但不是绑定的值)被认为是安全的

因此,如果他们被认为是安全的,为什么在编译时会自动删除脚本标记?

我可能在这里遗漏了一个安全问题,但即使在阅读了有关XSS的文档后,我也不明白Angular组件模板中由Angular编译器编译的脚本标记如何会危及安全性。

这里有人有答案吗?

1 个答案:

答案 0 :(得分:0)

以这种方式思考:当您编写Angular模板时,Angular编译器会读取该模板并创建该模板正在执行的操作的优化javascript表示,并将优化的javascript提供给浏览器。

因此,当浏览器获取模板时,它实际上不再是HTML了 - 它只是javascript。因此,不支持在此时从其他地方动态加载外部,未知和可能不安全的javascript。