【问题标题】:Why Angular2 sanitize script tag in components?为什么 Angular2 清理组件中的脚本标签?
【发布时间】:2017-09-13 05:17:13
【问题描述】:

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

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

就像官方文档里写的一样:

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

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

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

这里有人对此有答案吗?

【问题讨论】:

    标签: angular security xss


    【解决方案1】:

    这样想:当您编写 Angular 模板时,Angular 编译器会读取该模板并创建该模板正在执行的优化的 javascript 表示,并将优化的 javascript 提供给浏览器。

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

    【讨论】:

    • 好的,我没有看到这个角度的问题,谢谢。我也不知道不可能动态创建具有特定外部 src 属性的脚本标签
    猜你喜欢
    • 2018-03-30
    • 2017-02-09
    • 2017-06-08
    • 2015-08-08
    • 2017-01-21
    • 2013-04-15
    • 2011-08-13
    • 1970-01-01
    • 2015-08-19
    相关资源
    最近更新 更多