为什么 'data:' 会成为 CSP 的脚本源?

Why would 'data:' be a script-src for CSP?

我在我的服务器日志中看到了以下内容安全违规。 什么时候会有 'data:' type script-src? 'data:' 不只是为了例如base64 编码图像?

CSP violation! 
    { 'csp-report':
        { 'blocked-uri': 'data:',
        'document-uri': 'https://certsimple.com/blog/domain-validated-ssl',
        'original-policy': longPolicyGoesHere,
        referrer: '',
        'violated-directive': 'script-src https://example.com https://use.typekit.net \'unsafe-inline\' https://js.stripe.com \'unsafe-eval\' https://platform.twitter.com https://cdn.mxpnl.com https://syndication.twitter.com' } }

data: 用于 base64 编码的嵌入数据。虽然最流行的用法是将图像编码到样式表中以减少请求的数量,但这并不是唯一的用途。 URI 方案可用于如下脚本:

<script src="data:application/javascript;charset=utf-8;base64,YWxlcnQoJ1hTUycpOw=="></script>

也可在 jsfiddle 上使用。

您看到的报告是合法的,某些东西试图使用数据 URI 方案将任意 javascript 注入您的页面以混淆其行为。虽然这可能反映了您的应用程序中的问题,但它更有可能是流氓浏览器扩展,它要么是恶意的并试图偷偷摸摸地做事,要么 benign and very badly coded.