未加载到脚本标记中的脚本的子资源完整性

时间:2019-04-25 07:18:48

标签: javascript security subresource-integrity

我们正尽力在外部加载的Javascript代码中实现子资源完整性。这样做时,我们遇到了以下内联JavaScript,它们加载connect.facebook.com:

<script>(function (d, s, id) {
                        var js, fjs = d.getElementsByTagName(s)[0];
                        if (d.getElementById(id)) return;
                        js = d.createElement(s); js.id = id;
                        js.src = 
    "//connect.facebook.net/en_US/all.js#xfbml=1&amp;version=v2.3";
                        fjs.parentNode.insertBefore(js, fjs);
                    }(document, 'script', 'facebook-jssdk'));
</script>

通常,将这样加载外部资源的SRI:

<script src="https://connect.facebook.net/en_US/all.js" integrity="sha384-n25ZP6MV6AzJGKsqBSEL+6f0TktZsQqIE8PHXbrr6hJFNLzv6JM3/fuwTPGkO6l6" crossorigin="anonymous"></script>

我们注意到该facebook connect API已版本化,因此从理论上讲它应该适合SRI。但是,在加载all.js之前,必须内联包含前导脚本。

有人可以建议如何对此类脚本进行完整性检查吗?谢谢。

P.S我知道使用随机数和CSP的解决方案。那是唯一的方法吗?

0 个答案:

没有答案