随着 MySSL 企业版的开发进度的推进,我们最近上线了 HTTPS 外链监控的功能。下面是该功能相关使用说明。
进入 MySSL 企业版:
你会获取到类似:https://2d89e693d66a49d6993df623e272311f.myssl-uri.com/api/csp-report
类似的 URL。这是我们为你分配的专属不安全外链的上报地址。
你拿到该地址需要做的是,将该地址添加到服务器的 header 处。
配置规则
在添加之前,你需要了解内容安全策略的配置规则:
- Content-Security-Policy:内容安全策略,当网站加载的内容违背了该策略,浏览器将会阻止该资源的加载,并上报。
- Content-Security-Policy-Report-Only:内容安全策略仅报告,网站加载的资源违背了该策略仍然会被加载,并上报。
一般来说,你不知道自己添加的策略有什么问题,建议你先通过配置 Content-Security-Policy-Report-Only
,然后在 MySSL EE 上查看相关报告之后并改正,最后改为 Content-Security-Policy
。
常用配置项的说明:
style-src
:指定样式表的加载来源。如style-src https: 'unsafe-inline'
。img-src
:指定图片的来源。如img-src https: data: https://xx.xxx.co
。font-src
:指定可提供网页字体的来源。如font-src https://themes.googleusercontent.com
。child-src
:用于列出适用于工作线程和嵌入的帧内容的网址。如child-src https://youtube.com
。connect-src
:用于限制可(通过 XHR、WebSockets 和 EventSource)连接的来源。media-src
:用于限制允许传输视频和音频的来源。object-src
:可对 Flash 和其他插件进行控制。default-src
:默认策略,当你没有配置上面的内容策略时,默认使用。- report-uri:用于指定在违反内容安全政策时浏览器向其发送报告的网址。
- base-uri:用于限制可在页面的
<base>
元素中显示的网址。 - upgrade-insecure-requests:指示 User Agent 将 HTTP 更改为 HTTPS,重写网址架构。 该指令适用于具有大量旧网址(需要重写)的网站,慎用。
一般来说,以 -src
结尾的都适用于 default-src
,即在没有指定 xx-src
的情况下将默认使用 default-src
。
例:
Content-Security-Policy-Report-Only "default-src https://example.com; font-src https://st.example.com"
这个策略,font-src
只能加载 https://st.example.com
的字体资源,不能加载 https://example.com
的字体资源。其它没有指定的均使用 default-src
。
那么,以 xx-src
的内容可以填什么呢,一般可以填写:
'none'
:不执行任何匹配。'unsafe'
:与当前来源(而不是其子域)匹配。'unsafe-inline'
:允许使用内联 JavaScript 和 CSS。'unsafe-eval'
:允许使用类似 eval 的 text-to-JavaScript 机制。https:
:以https:
开头的。data:
:以data:
开头的。blob:
:以blob
开头的。- 网址:直接指定网址。
这里列举 Nginx 和 Apache 相关例子,在添加该 header 之前请详细了解 Content-Security-Policy-Report-Only
的作用:
1、Nginx 如何配置
add_header Content-Security-Policy-Report-Only "default-src https: data: 'unsafe-inline' 'unsafe-eval' wss:; report-uri https://2d89e693d66a49d6993df623e272311f.myssl-uri.com/api/csp-report";
2、 Apache 如何配置
Header add Content-Security-Policy-Report-Only "default-src https: data: 'unsafe-inline' 'unsafe-eval' wss:; report-uri https://2d89e693d66a49d6993df623e272311f.myssl-uri.com/api/csp-report"
当 MySSL 企业版获取到上报的外链时,你会看到这样的画面:
如果你想了解更多有关内容安全响应头: