Evernote Web Clipper 和内容安全策略

Evernote Web Clipper and Content Security Policy

我们目前正在向一个网站引入内容安全政策。首先插入 Content-Security-Policy-Report-Only header 以获得有关影响的一些反馈。很快我们发现 Safari 浏览器中的 Evernote Web Clipper 插件违反了 CSP 指令,因为它似乎在页面中注入了一些代码。

我们在 CSP 报告中得到了这个:

{"csp-report":
    {
        "document-uri":"http://example.com/index.html",
        "violated-directive":"default-src 'self'",
        "original-policy":"default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; report-uri http://example.com/report.html",
        "blocked-uri":"safari-extension://com.evernote.safari.clipper-uahs7eh2ja",
        "source-file":"http://example.com/js/jquery.js",
        "line-number":2
    }
}

我们需要如何修改 CSP header 才能不阻止 Evernote Web Clipper 插件? blocked-uri 似乎在末尾包含一个 user-specific id,这使得它变得非常困难。

你说得对,被阻止的 uri 的最后一位确实因计算机而异,你不能使用通配符将其列入白名单。取消阻止 Web Clipper 的唯一方法是通过将 safari-extension://* 放入 default-src 来取消阻止所有 Safari 扩展,因此您的策略看起来像

default-src 'self' safari-extension://*; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; report-uri http://example.com/report.html