问题是: 如果某些脚本删除了以前加载或包含的脚本,那么在异步加载 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);
}
}
当然,这个问题是非常特定于浏览器的,但我感兴趣的是,是否存在任何会在任何特定浏览器中打开内存漏洞的怪癖。 我也对您知道的任何边缘情况感兴趣!
我非常感谢您对您所知道的关于可能不安全的脚本加载的任何边缘情况的响应! 谢谢。
最佳答案
没有。 <script>
节点从 DOM 中删除,但这不能恢复在通过它们加载的 JavaScript 执行期间发生的事情。实际上,它们在实例化后没有任何作用,这会触发脚本下载和评估。
唯一可能受影响的是依赖 DOM 节点存在的其他脚本,例如从中读取模板字符串、内容位置 url 或其他数据。
关于javascript - 如果某些脚本删除了先前加载或包含的脚本,那么异步加载 webapps 会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14782688/