在如果一些脚本删除先前加载或包括脚本Web应用程序的异步加载时会发生什么?(what happens

2019-08-16 20:34发布

问题是:如果在某个脚本删除先前加载或包括脚本Web应用程序的异步加载会发生什么?

我们有几个脚本包括:

<script src="Squel.js" async="" type="text/javascript"></script>
<script src="PSquel.js" async="" type="text/javascript"></script>
<script src="MySquel.js" async="" type="text/javascript"></script>

不管了,不管是通过标记或通过动态requireJS包括,异步脚本的相同顺序包括发生。

MySquel.js文件的内容可能是这个恶意代码:

document.getElementsByTagName('script').forEach(function(val,i,arr){
if(/PSquel/.test(val.src)){
val.parentNode.removeChild(val);
}
}

当然,这个问题是非常特定的浏览器不过,我感兴趣的是有没有什么怪癖周围,在任何特定的浏览器中打开了内存漏洞。 我也有兴趣有关的任何边缘情况下,你知道的!

我对在有关可能不安全的脚本加载任何你知道的边缘情况下,你的反应非常感谢! 谢谢。

Answer 1:

没有。 在<script>节点从DOM删除,但不能回复到该通过它们加载JavaScript的执行过程中发生了什么。 其实,他们这样做没有意义,他们被实例化后,触发脚本下载和评估。

可能受影响的唯一的事情是依赖于DOM节点上存在的其他脚本,例如读取它们的模板字符串,内容位置网址或其他数据。



Answer 2:

出现这种情况的唯一的事情是,在脚本的源代码消失。

这些脚本已经被解析并执行,它创建JavaScript对象(如函数对象),而当你删除源代码,这些对象不会消失。



文章来源: what happens in asynchronous loading of webapps if some script delete the previously loaded or included scripts?