网站内容策略(CSP-内嵌框架指定可访问的外部CSS资源如何使用)
优采云 发布时间: 2022-04-18 09:30网站内容策略(CSP-内嵌框架指定可访问的外部CSS资源如何使用)
今天SEO Zen要讲的是CSP(Content Security Policy)内容安全策略。这是 HTTP 层的内容。主要目的是设置安全白名单。SEO Zen 已经引入了 XSS 跨站脚本攻击。CSP的主要作用是防止加载不安全的内容,即使有网站可以注入JS脚本的地方,只要不加载和访问外部资源,还是比较安全的。
如何启用 CSP
开启CSP有两种方式:服务端配置Http头,在html页面上设置Meta标签。
以Apache为例,在httpd.conf文件中的virtualHost中添加如下代码:
Header set Content-Security-Policy "default-src 'self';"
这个配置的意思是告诉客户端浏览器,默认情况下,除了自己服务器的资源之外,其他资源的加载都会被阻塞。
如果是Meta模式,代码如下:
上面的img-src表示图片只能加载支持https协议的资源,childe-src是阻止所有Web Workers和部分iframe外部资源加载。
CSP 指令选项
以上只是对一些命令的简单介绍。CSP 提供了许多命令选项。简单介绍一下SEO Zen。如果需要使用,还是需要看官方文档。
connect-src 连接资源
指定可访问的连接源,例如 XHR、WebSockets 和来自 EventSource 的外部请求。
font-src 字体资源
指定可访问的字体资源,例如 google 字体的字体。
frame-src iframe
指定可访问的 iframe 资源,即使用框架或 iframe 嵌入网页中的外部资源。
script-src JS脚本资源
指定可访问的外部 JS 脚本资源。
style-src 样式资源
指定可访问的外部 CSS 资源。
media-src 媒体资源
指定可访问的外部媒体资源,例如 、 、 元素等。
CSP 有很多命令选项,可以参考 MDN 的 CSP 文档。
CSP 期权价值
上面列出了一些常用的 CSP 选项。如何使用它们?以下段落直接抄自阮一峰先生的博客:
例如:
Content-Security-Policy: script-src 'self' https://*.seozen.top
上面白名单的意思是:除了自己的域名和所有在https协议下的域名,其余的外部JS资源都被阻止加载。连这样的域名也加载不出来,因为协议不符合要求。
如果有多个外部资源,可以并排,中间用空格隔开,最后一个选项用;隔开,如:
Content-Security-Policy: default-src https://cdn.example.net; child-src 'none'; object-src 'none'
今天的文章关于CSP的分享在这里。更深入的了解可以参考以下链接:
内容安全政策——谷歌网络基础知识
m=2oec10&aip=1&z=86477041">阮一峰CSP教程
内容安全策略参考指南
内容安全策略 MDN