为什么'data:'是CSP的脚本src?

mik*_*ana 6 content-security-policy

我在服务器的日志中看到了以下内容安全违规.什么时候会有'data:'类型的脚本-src?"数据:"不仅适用于例如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' } }
Run Code Online (Sandbox Code Playgroud)

ant*_*an1 7

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

<script src="data:application/javascript;charset=utf-8;base64,YWxlcnQoJ1hTUycpOw=="></script>
Run Code Online (Sandbox Code Playgroud)

也可以在jsfiddle找到.

您看到的报告是合法的,有些尝试使用数据URI方案将任意javascript注入您的页面,以模糊它正在做的事情.虽然这可能反映了您的应用程序中存在的问题,但它更可能是一个流氓浏览器扩展,它既可能是恶意的,也可能是做鬼鬼祟祟的事情,也可能是良性和非常糟糕的编码.