gpt4 book ai didi

javascript - angularjs如何防止内联脚本标签执行?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:09:04 25 4
gpt4 key购买 nike

我很想知道 AngularJS 如何防止内联 <script>在通过 ng-include 包含标签时执行标签指令。

包含模板并检查 DOM 后,脚本标签肯定存在,但尚未执行。他们是如何解除武装的?

我已经开始审查源代码,但我自己尝试将脚本标记包含到 DOM 中(appendChild、 innerHTML 、innerText、document.write 等)总是会导致它被处决。

谢谢。

最佳答案

那是道神器jqLite已实现。

要使脚本标签起作用,只需确保在 angular.js 之前加载 jQuery 库。文件。

  <head>
<script src="//unpkg.com/jquery"></script>
<script src="//unpkg.com/angular/angular.js"></script>
<link rel="stylesheet" href="style.css">
<script src="script.js"></script>
</head>

DEMO on PLNKR .


if you explain more that innerHTML is enough to prevent the script tags from executing I will select your answer as correct

HTML5 指定 <script>innerHTML 插入的标签should not execute.

但是,有一些方法可以不使用 <script> 来执行 JavaScript元素,因此无论何时使用 innerHTML 仍然存在安全风险设置您无法控制的字符串。例如:

const name = "<img src='x' onerror='alert(1)'>";
el.innerHTML = name; // shows the alert

因此,建议您不要使用 innerHTML插入纯文本时;相反,使用 Node.textContent .这不会将传递的内容解析为 HTML,而是将其作为原始文本插入。

有关详细信息,请参阅 MDN Web API Reference - Element.innerHTML .

关于javascript - angularjs如何防止内联脚本标签执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54496453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com