从数据 URL 加载脚本内容

Loading script content from data URL

本文关键字:脚本 加载 数据 URL      更新时间:2023-09-26

我只是在测试是否可以通过数据 url 加载脚本。令我惊讶的是,在我的实际铬中它可以工作。

我加载以下文档:

<html>
    <head>
        <script type="text/javascript">
            var head = document.getElementsByTagName('head')[0];
            var script = document.createElement('script');
            script.type = 'text/javascript';
            script.src = 'data:text/javascript,alert("hello!");';
            head.appendChild(script);
            head.removeChild(script);
        </script>
    </head>
</html>

。然后弹出一个"你好!"的盒子。

这不是和eval()一样糟糕吗?这使得编译任意内容(包含任何 POST 内容或 GET 参数)并将其"注入"到运行代码中成为可能!

有人可以告诉我这是否是实际浏览器常见的预期行为吗?

它与eval()并没有真正的区别,因为它具有几乎相同的行为。然而,在某些情况下,eval() 并不是邪恶的。