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

Why Angular2 sanitize script tag in components?

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

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

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

HTML, attributes, and binding expressions (but not the values bound) in templates are trusted to be safe

那么,如果相信它们是安全的,为什么在编译时会自动删除脚本标签?

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

这里有人回答这个问题吗?

这样想:当您编写 Angular 模板时,Angular 编译器读取该模板并创建一个优化的 javascript 表示该模板正在做什么并提供优化了 javascript 到浏览器。

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