普通视图

发现新文章,点击刷新页面。
昨天以前Jiansing's Blog

2020 年半年度总结

2020年5月31日 08:00

子在川上,逝者斯夫;非常之年,寸阴是竞。不觉间半年过去了,来做个总结吧。

2020 年半年度总结

(Illustration by Stories by Freepik)

Blog 2020 上半年时间线

2020-02-05

购买了 ofo.moe 域名,和某个知名共享单车品牌没有任何关系,纯粹是觉得这个像 Emoji 一样的词很有意思。原本想购买形似 omo.moe、ouo.moe 的域名,可惜均被注册,后来才改用现在的域名。(还是好想要 omo.moe 啊!)

2020-02-06

用根域名做了一个收集英文 Emoji 的站点。还没有开始使用 Gatsby,自己手动抄下来了一个 Gatsby 主题,并修改为 AMP HTML,可惜现在已经搁置好久了。

2020-02-28

仿照某个国外网站以及果壳任意门,做了一个「网站任意门」,点击按钮可以随机跳转一个奇奇怪怪的网站,或是很有意思,或是非常无聊,既有在线工具,也有学习网站。

2020-03-14

移植了一个 Wordpress 主题到 Gridea,定名为 Gridea Theme InlineAMP。开始使用 Gridea 写 Blog。

2020-03-22

网站任意门」被「有趣网址之家」收录。

2020-04-06

正式使用 blog.ofo.moe 域名建立了 blog。

2020-04-08

给部署在 Netlify 上的站点添加了完备的 HTTP security headers 增强安全性,将 ofo.moe 与「网站任意门」都迁移到了 netlify.com,DNS 也改用了 netlify.com 的,然而速度似乎还不如 CloudFlare,最后因重新迁移复杂而放弃了迁移回 CloudFlare 的想法。然而忘记了给根域名配置 HTTP security headers,导致后来 HSTS 预载被删除

2020-04-13

用 Power Automate 给自己的 Blog 整了一个邮件订阅服务

2020-04-21

由于微博某博主的安利,「网站任意门」爆增了 22 万的访问用户。

2020-05-02

把收藏夹里的几个很棒的插图库找了出来,写了篇文章简单总结了一遍。

2020-05-30

更新了 About 页面,处理了重新申请 HSTS 预载等杂务。

顺带将 Email 地址由原先的以图片方式显示更改为 javascript 混淆,点击就可以跳转 mailto 链接。

在线混淆工具:http://www.email-obfuscator.com/

在线混淆工具

下半年也要迎风奔跑呀。

5 个可以在线 DIY 定制的免费矢量插图素材库,用这些插图素材充实你的项目

2020年5月2日 08:00

有时候写文章、产品说明或 PPT 时会用到插图,好看又合适的插图可以为项目增光添彩。

最有效率的方法当然是直接去插图素材库找到好看的插图,下载后使用。然而你可能想获得更有个性化的插图,那么就收下这些可以在线 DIY 定制的免费矢量插图素材库,用这些插图素材让你的项目更充实吧!

下面介绍的素材库都可以免费下载,支持在线自定义插图的颜色、元素、背景等;插图内容涵盖了各种类型,采用平面化设计。

Stories by Freepik

[Stories by Freepik 插图库首页截图](https://stories.freepik.com/)

亮点

可自定义更改插图颜色

可任意选择一种预设插图颜色,也可以使用颜色选择器,还可以直接输入 RGB 或十六进制值。

可自定义插图背景

  • 隐藏:插图不使用任何背景(现有的四种插图样式都支持这个选项)
  • 简单:插图显示简单的背景(仅 Rafiki、Bro 和 Pana 样式支持)
  • 详细:插图显示更详细的背景(仅 Rafiki 和 Pana 样式支持)

可以自定义隐藏插图中的元素

选中一个插图时,右侧会有一个图层列表。这些图层对应插图中的不同元素,你可以选择要保留的图层,并隐藏不需要的图层。要隐藏任何元素,只需单击列表上其名称旁边的眼睛按钮即可。

[Stories by Freepik 插图自定义](https://stories.freepik.com/)

插图动画化

重头戏来了,这是我最喜欢的一点,Stories by Freepik 可以让插图动起来,获得更丰富的视觉效果。

点击选定插图的「Animate it」按钮,进入动画编辑页面,动画同样是可以 DIY 定制的:

[Stories by Freepik 插图动画化](https://stories.freepik.com/)

设置插图元素进入效果
  • 淡入:元素逐渐出现在屏幕上
  • 向上滑动:元素向上滑动时出现在屏幕上
  • 向下滑动:元素向下滑动时出现在屏幕上
  • 向左滑动:元素从左侧滑动时出现在屏幕上
  • 向右滑动:元素从右侧滑动时出现在屏幕上
  • 放大:元素随着大小的增大而出现在屏幕上
  • 缩小:元素随着大小的缩小而出现在屏幕上
  • Light Left:该元素从左侧进入,颤动并保持在原位
  • Light Right:该元素从右侧进入,颤动并保持在原位
给插图入场动画设置缓动类型
  • Toon
  • Linear(线性)
  • Ease-in(淡入)
  • Ease-out(淡出)
Animate children

可以给所选元素的不同部分分别进行入场动画处理。

设置插图元素循环播放的动画效果

可设置的效果有:

  • Shake
  • Spin
  • Floating
  • Heartbeat
  • Wind
其他插图动画化配置项
  • 持续时间:可以以秒为单位设置插图动画持续时间
  • 延迟:可以设置插图动画开始之前延迟的秒数

此外,如果你看着如此繁多的设置选项却没有灵感,它还贴心地设置了一个「随机」按钮。

插图类型

每个 Tag 对应的插图都有四种风格(我感觉都差不多,只是配色不同):

  • Rafiki
  • Bro
  • Amico
  • Pana

插图价格

完全免费,但必须注明来源。

We recommend placing ‘Illustration by Stories by Freepik’ next to the illustrations that is being used and a link to our website. If you can’t add it next to the image, you can place it in the footer of your website, blog or newsletter.

插图支持的导出类型

静态插图支持以 SVG 或 PNG 格式下载。动画化的插图则提供了相应的 HTML 代码,有延迟加载、即时加载等方式;也可以导出为 GIF 或 MP4 视频。

VECTOR CREATOR

vector creator 首页截图

亮点

vector creator 编辑器

自定义更改插图元素颜色

可以使用颜色选择器,或者直接输入十六进制值。含多种颜色的元素可以精细到调整每一种颜色。

强大又易用的插图编辑器

轻松拖动即可添加、移动插图的元素,可以左右上下翻转、调整图层,编辑器可以撤销、重复操作,画布尺寸也可以自定义编辑,默认还预置了 Twitter、Facebook 等图片尺寸。此外,它还支持自己上传图片作为一个元素。

插图类型

有人物、动物、植物等类别的元素,而且每种类型的插图还有不同的风格,风格比 Stories by Freepik 多,数量上感觉和 Stories by Freepik 差不多。

插图价格及支持的导出类型

无需注册即可免费设计并下载 PNG 格式的插图,如果需要下载 SVG 需要每月支付 $19.90。

不付费使用时需要遵循免费使用条款:

Share — copy and redistribute the material in any medium or format.

Adapt — remix, transform, and build upon the material for any purpose, even commercially.

Attribution — you must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.

No additional restrictions — you may not apply legal terms or technological measures that legally restrict others from doing anything the license permits.

unDraw 插图库

亮点

自定义更改插图颜色

unDraw 首页截图

可任意选择一种预设颜色,也可以使用颜色选择器,还可以直接输入十六进制值。

插图类型

所有的插图都是同一种风格。该项目于 2017 年推出,直到现在已经积累了很丰富的插图。

插图价格及支持的导出类型

完全免费,可以在任何商业或个人项目中使用这些插图,并且无需注明出处。unDraw 插图库中所有的插图都支持以 PNG 和 SVG 格式下载。

Manypixels 插图库

可以说是另一个版本的 unDraw 插图库。同样支持自定义更改插图颜色,以 PNG 和 SVG 格式下载,完全免费,可以将这些插图用于任何商业或个人项目中,并且无需注明出处。Manypixels 插图库提供了四种风格的插图供选择。

Manypixels 插图库首页截图

ITG.digital 插图生成器

itg.digital 插图库首页截图

亮点

自定义插图颜色

可任意选择一种预设颜色,也可以使用颜色选择器,或者直接输入十六进制值。

自定义插图元素

ITG.digital 插图生成器可以说是既有一些局限性,也保留了一定的自由度。

可以移除元素、更改插图中的元素。但是不能进行自由地拖拽,在每一张插图中,每个元素的位置是固定的,而且每个位置的元素只能从预置的几个替代元素中进行替换。

有些元素又可以拆分为若干个子元素,每个子元素同样可以自定义颜色、替换等。

itg.digital 自定义插图元素示例

插图类型

目前有五种插图风格,和 Stories by Freepik 不同的是,ITG.digital 插图生成器没有为每个 Tag 都提供几种风格的插图,而是定好风格后自由发挥。

插图价格及支持导出的类型

ITG.digital 插图生成器需要注册账户才能生成插图,免费计划仅能导出为 JPG 格式,只能下载 100 次插图,并且使用时需要链接到网站;付费计划为 $28/month 或 $228/year(目前由于疫情原因提供了 30% 的折扣),可以下载 SVG,PNG,JPG 格式,月付计划每月最多 250 次下载,年付计划可以无限次下载。

itg.digital 价格表

总结

5 个可以在线 DIY 定制的免费矢量插图素材库

在以上 5 个免费矢量插图素材库中,VECTOR CREATOR 无疑是最易用的,不需要下载任何软件即可轻松做出个性化极高的插图;Stories by Freepik 的插图动画化功能很有意思,而且支持导出的格式也挺多;unDrawManypixels 插图库虽然只能自定义颜色,但是插图多而且完全免费使用;ITG.digital 插图生成器是一个新出不久的插图库,里面的插图确实非常精美,也有相当的可定制性,不过付费计划价格相对更昂贵一些。

本文亦发布于「少数派」,因 Blog 主题原因,文中原有动图已更换为 Png 格式,可前往少数派查看动图。

手把手教你使用 Power Automate 建立一个 Rss 邮件订阅服务

2020年4月13日 08:00

之前一直想给自己的 Blog 整一个邮件订阅服务,正好可以试试 Power Automate。

Power Automate 是一项自动化服务,以前叫做 Microsoft Flow,可以在应用程序和服务之间创建自动化的工作流,以同步文件,获取通知,收集数据等。类似的自动化服务还有 IFTTTZapierIntegromatn8n 等。

大致流程:

  1. 利用 Microsoft Forms 收集订阅者的邮箱地址
  2. 创建一个 RSS 触发器,Blog 更新时自动运行工作流
  3. 检索 Microsoft Forms 已经记录的邮箱并发送邮件

创建订阅表单

Microsoft Forms 创建出的表单本质上是一个 .xlsx 文件。这里有个容易踩坑的点,如果你直接在 Microsoft Forms Web 创建表单的话,下一步你可能找不到创建出来的表单所在的存储位置。

更好的方法是在 Onedrive 里面创建:

在 Onedrive 里面创建 Forms

  1. 转到你想要保存订阅表单的文件路径下
  2. 点击「新建」
  3. 新建一个「适用于 Excel 的 Forms」

创建完成后会自动跳转到 Microsoft Forms 进行编辑,我们在表单里设置一个问题来收集订阅者的邮箱。

收集订阅者的邮箱

注意在设置里打开「具有链接的所有人均可回复」。

配置 Power Automate 工作流

Power Automate 可以使用 Microsoft 账号直接登录,你也可以用邮箱注册一个账号。Power Automate 可以免费试用(使用?)。

任何人都可以注册并获得 Power Automate 的免费计划。如果您的组织已为您购买了 Office 365 或 Dynamics 365,则可以访问 Power Automate 的其他功能。如果您想使用付费功能,还可以开始 90 天免费试用,或购买 Power Automate Plan 1 或 Plan 2。

  1. 进入 Power Automate,点击「创建」,创建一个「自动化流」,此外,它还提供了「即时流」、「计划流」以及「业务流程流」。

创建一个「自动化流」

  1. 搜索「RSS」可以找到这个触发器,选择它并点击「创建」。

RSS 触发器

  1. 输入 RSS 的链接。接下来点击「+新步骤」,搜索操作「Get rows」并添加。(后文附搜不出的解决方法)

搜索操作「Get rows」并添加

第一次使用 Excel Online 相关操作需要登录授权。与 IFTTT 不同的是,IFTTT 每一种服务只能连接一个账号,而 Power Automate 的每一种服务都可以连接到多个账号。

文件选取刚刚创建的 Forms(后缀为 .xlsx)。

  1. 再创建一个步骤,选择「控件」,创建「应用到每一个」控件。

「应用到每一个」控件

  1. 接下来在「输出」里面「添加动态内容」,点击「Get rows」的 value。「动态内容」就相当于一个个变量。

添加动态内容

  1. 然后点击「应用到每一个」控件里面的「添加操作」,创建一个「条件」控件。因为表单里面可以填写任意文本,所以这里我们做一个简单的筛选。

条件判断

  1. 在「如果是」控件里面添加一个「发送电子邮件」操作,除 Outlook 外,Power Automate 还支持 Gmail 等邮件服务。

发送邮件

  1. 「到」里面「添加动态内容」,选取「Get rows」的「填写你的邮箱:」并加上 ; 。注意这是我的表单上设置的问题,请选取你自己设置的问题提示文本。不要选择「电子邮件」,因为当 Microsoft Forms 设置为「具有链接的所有人均可回复」时,「电子邮件」这一项的值是空的。

添加收件人

  1. 接下来编辑一份邮件模板,注意用上 RSS 的「动态内容」。这里提供了一个邮件编辑器,也可以使用 Html。

邮件编辑器

至此,一个简单的 RSS 邮件订阅系统就构建完成啦。你可以点击右上角「测试」来看看能否正常运行。第一次测试需要自己执行触发器操作(在 Blog 上发一篇测试文章以更新 RSS),下次测试就可以直接使用第一次的数据进行重复测试。

订阅邮件

踩坑的点

为什么不用「获取行」(中文界面显示的操作名称)?

一开始我使用的就是「获取行」,从名称来看,功能似乎是一样的,但是却要求输入「密钥值」。

获取行

后来看到在 Power Automate 的英文文档里面,Key Value 只在「Delete a row」、「Get a row」以及「Update a row」操作中才需要,所以「获取行」实际上是「获取行」。

搜不出「Get rows」?

我也搜不出「Get rows」。😢

但是这个操作是实际存在的,比如下面这个 Power Automate 模板,里面就使用了这个操作。那么怎么添加到自己的工作流里呢?

Power Automate 模板

这里要先提一提 Power Automate 一个非常好用的功能:「复制到剪切板」

代码剪切板

在 Power Automate 主页搜索这个模板:Send an email to contacts listed in an Excel sheet on OneDrive (Business)

然后就可以将「Get rows」搬过来了。

复制

总结

可以看到在我们的工作流中真正关键的只有 4 个步骤,并不算复杂。这个工作流除了给 Blog 的订阅者使用,也可以拿来订阅任何我们感兴趣的 RSS 源。甚至你可以自己搭建一个类似 RSSMailer 的服务。(RSSMailer – 用邮箱接收每日 RSS 更新,RSS 阅读器

目前我们建立的邮件订阅服务还很简单,后续将加上退订之类的功能。

Power Automate 是另一个 IFTTT 吗?

Power Automate 目前可以连接 336 项服务,大多是 Microsoft 自家的产品,数量上远远比不上 IFTTT (目前 IFTTT 可以连接 1254 项服务)。

不过 IFTTT 的 applets 只能配置简单的条件判断,而且不是开发者账号不能在一个 applet 里连接多项服务;相比之下,Power Automate 除了可以连接多项服务外,同一个服务还能连接到不同账号,而且,Power Automate 的配置也比 IFTTT 精细得多。

如果你只需要每天来一条天气提醒的话,大可不必使用 Power Automate 如此复杂的工具;但是如果是文件处理之类的任务,Power Automate 显然要比 IFTTT 更有优势。

最后,放上本博客的邮件订阅表单,欢迎大家订阅!(也可以点 这里

给部署在 Netlify 上的站点添加 HTTP security headers 增强安全性

2020年4月8日 08:00

本站是部署在 Netlify 上的静态 Blog,Netlify 提供了两种配置自定义响应头的 方法,这里我使用 netlify.toml 文件进行配置。

Strict-Transport-Security(HSTS)

HSTS 也就是HTTP严格传输安全的英文缩写,从 caniuse 可以看到大多数浏览器都支持这个响应头。

维基百科

网站可以选择使用 HSTS 策略,来让浏览器强制使用 HTTPS 与网站进行通信,以减少会话劫持风险。

Netlify 可以直接在域名设置里开启强制 HTTPS,开启后 HTTP 请求会被重定向到 HTTPS 请求,并且加上了一个 HSTS 响应头;不过,Netlify 添加 HSTS 响应头默认没有包括子域名,也没有添加 HSTS Preload,为了更安全,建议加入 HSTS Preload 列表。

netlify.toml 文件(没有就在网站根目录下创建一个)里面加入以下代码:

netlify.toml
1[[headers]]
2
3 for = "/*"
4
5 [headers.values]
6 Strict-Transport-Security = "max-age=63072000; includeSubDomains; preload"

然后你就可以前往 这里 提交你的域名,HSTS Preload 审核的时间有长有短,提交后需要耐心等待。

X-Frame-Options

2020-09-30 更新:现已不建议使用此标头,通过 Content-Security-Policy 标头中的 frame-ancestors 指令,可以实现更一致的支持和更强大的检查,从而达到类似的效果。

X-Frame-Options 可以通过确保网站没有被嵌入到别人的站点里面,从而避免 clickjacking (点击劫持)攻击,大部分浏览器 都能很好的支持这个响应头。

这个响应头支持三种配置值:

  • DENY:表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许
  • SAMEORIGIN:表示该页面可以在相同域名页面的 frame 中展示
  • ALLOW-FROM uri:表示该页面可以在指定来源的 frame 中展示

注意最后一种用法目前很少有浏览器支持。

netlify.toml 文件的 [headers.values] 下面加入一行:

netlify.toml
1[[headers]]
2
3 for = "/*"
4
5 [headers.values]
6 Strict-Transport-Security = "max-age=63072000; includeSubDomains; preload"
7 X-Frame-Options = "DENY"

X-XSS-Protection

X-XSS-Protection 响应头是用来防范 XSS 的,当检测到跨站脚本攻击 (XSS) 时,浏览器将停止加载页面。现代浏览器中默认都开启了 XSS 保护,并且可以使用更强大的 Content-Security-Policy 响应头进一步增强安全性。

所以,这个响应头主要是为尚不支持 CSP 的旧版浏览器的用户提供保护。开启后可以提升攻击难度,没有特别的理由,不要关闭它,聊胜于无嘛。

它也有几种配置:

  • 0:禁用 XSS 保护
  • 1:启用 XSS 保护
  • 1; mode=block:启用 XSS 保护,并在检查到 XSS 攻击时,停止渲染页面
  • 1; report=reporting-URI:启用 XSS 过滤,并在检查到 XSS 攻击时,浏览器将停止渲染页面并使用类似 CSP report-uri 指令的功能发送违规报告

注意最后一项配置仅 Chromium 内核浏览器支持。下面是一个示例:

netlify.toml
1[[headers]]
2
3 for = "/*"
4
5 [headers.values]
6 Strict-Transport-Security = "max-age=63072000; includeSubDomains; preload"
7 X-Frame-Options = "DENY"
8 X-XSS-Protection = "1; mode=block; report=<url>"

Expect-CT

Expect-CT 头请求浏览器检查该网站的证书是否出现在公共证书透明度日志之中,类似 CAA 记录,可以有效降低错误颁发证书的风险。

它有三种指令:

  • max-age:Expect-CT 有效时间,单位为秒
  • report-uri="url":可选,配置发送违规报告的 url
  • enforce:该指令会强制执行证书透明度政策,如果不合规将拒绝连接

添加 Expect-CT 也很简单:

netlify.toml
1[[headers]]
2
3 for = "/*"
4
5 [headers.values]
6 Strict-Transport-Security = "max-age=63072000; includeSubDomains; preload"
7 X-Frame-Options = "DENY"
8 X-XSS-Protection = "1; mode=block; report=<url>"
9 Expect-CT = "max-age=86400; enforce; report-uri='<url>'"

Content-Security-Policy

Content-Security-Policy 允许控制页面可以加载哪些资源,减少 XSS 的发生。CanIUse 上可以看到大多数主流浏览器(除了 Internet Explorer)都支持了 Content-Security-Policy。

CSP 配置比较复杂,我使用了 Report URI 的 CSP 向导来生成配置。点击 这里 注册一个账号,免费计划可以每月获取 10000 次报告,监控三个站点,保留 90 天报告数据,对于一个 Blog 来说完全够了。

注册后你会得到一个用来接收报告的 url,你可以换一个好看的子域名。在 netlify.toml 文件的 [headers.values] 下面加入一行(注意替换 {subdomain} 为你自己的子域名):

netlify.toml
1[[headers]]
2
3 for = "/*"
4
5 [headers.values]
6 Strict-Transport-Security = "max-age=63072000; includeSubDomains; preload"
7 X-Frame-Options = "DENY"
8 X-XSS-Protection = "1; mode=block; report=<url>"
9 Expect-CT = "max-age=86400; enforce; report-uri='<url>'"
10 Content-Security-Policy-Report-Only: default-src 'none'; form-action 'none'; frame-ancestors 'none'; report-uri https://{subdomain}.report-uri.com/r/d/csp/wizard

上面的 CSP 政策是「仅报告」,所以它不会对网页造成什么影响,可以放心添加。然后当你的网页被访问的时候,浏览器会发送一些「违规资源信息」给 Report URI,可以在 这里 看到。

这些「违规资源」有些是网站需要的,比如 Google Analytics,你可以选择将它加入到 CSP 中,然后打开 我的 CSP 政策,用生成的 CSP 策略替换掉原来的 default-src 'none'; form-action 'none'; frame-ancestors 'none'

CSP 向导

Report URI 建议至少运行 CSP 向导 7 天,以确保覆盖所有流量和用户,如果没有继续收到新的「违规资源」,就可以将 CSP 策略更改为「执行」。

netlify.toml
1[[headers]]
2
3 for = "/*"
4
5 [headers.values]
6 Strict-Transport-Security = "max-age=63072000; includeSubDomains; preload"
7 X-Frame-Options = "DENY"
8 X-XSS-Protection = "1; mode=block; report=<url>"
9 Expect-CT = "max-age=86400; enforce; report-uri='<url>'"
10 Content-Security-Policy: default-src 'none'; form-action 'none'; frame-ancestors 'none'; report-uri https://{subdomain}.report-uri.com/r/d/csp/enforce

此外,你还可以使用 CSP EvaluatorReport URI 来评估你的 CSP 策略是否安全。

这里再放两个 CSP 手动生成器:

https://report-uri.com/home/generate

https://www.cspisawesome.com/

Feature-Policy(功能政策)

2020-09-30 更新:现已被 Permissions Policy(权限政策)标头取代,但由于目前仅被最新的 Chrome Dev 支持,建议暂时保留此标头,同时加上最新的 Permissions Policy(权限政策)标头。

Feature Policy 是一个还在实验阶段的功能,用来启用或禁用某些浏览器功能和 API,以提高安全性和隐私性。它的配置和 CSP 类似。

指令值:

  • *:允许当前页面使用该功能以及其中的任何嵌套浏览上下文,如 iframe
  • 'self':允许当前页面使用该功能和任何位于同一源的嵌套浏览上下文,例如 iframe
  • 'none':不允许使用该功能
  • <origin(s)>:只允许指定的源使用此功能

下面贴一个我的配置:

netlify.toml
1[[headers]]
2
3 for = "/*"
4
5 [headers.values]
6 Strict-Transport-Security = "max-age=63072000; includeSubDomains; preload"
7 X-Frame-Options = "DENY"
8 X-XSS-Protection = "1; mode=block; report=<url>"
9 Expect-CT = "max-age=86400; enforce; report-uri='<url>'"
10 Content-Security-Policy: default-src 'none'; form-action 'none'; frame-ancestors 'none'; report-uri https://{subdomain}.report-uri.com/r/d/csp/enforce
11 Feature-Policy = "accelerometer 'none'; ambient-light-sensor 'none'; camera 'none'; gyroscope 'none'; magnetometer 'none'; microphone 'none'; payment 'none'; usb 'none'"

里面禁用了摄像头、麦克风、支付请求等浏览器功能,可以看到很多功能对普通的站点来说根本没必要,可以放心禁用。

Chromium 支持进行控制的功能清单可以看 这里

Permissions Policy(权限政策)

功能与 Feature Policy 类似,但格式有所不同,上面的 Feature Policy 更换为相应的 Permissions Policy 如下:

1Permissions-Policy = "accelerometer=(); ambient-light-sensor=(); camera=(); gyroscope=(); magnetometer=(); microphone=(); payment=(); usb=()"

Report-To

用于启用报告 API。这使得网站可以从浏览器收集有关可能发生的各种错误的报告。你同样可以在 Report URI 上注册一个免费帐户以收集这些报告。

netlify.toml
1[[headers]]
2
3 for = "/*"
4
5 [headers.values]
6 Strict-Transport-Security = "max-age=63072000; includeSubDomains; preload"
7 X-Frame-Options = "DENY"
8 X-XSS-Protection = "1; mode=block; report=<url>"
9 Expect-CT = "max-age=86400; enforce; report-uri='<url>'"
10 Content-Security-Policy: default-src 'none'; form-action 'none'; frame-ancestors 'none'; report-uri https://{subdomain}.report-uri.com/r/d/csp/enforce
11 Feature-Policy = "accelerometer 'none'; ambient-light-sensor 'none'; camera 'none'; gyroscope 'none'; magnetometer 'none'; microphone 'none'; payment 'none'; usb 'none'"
12 Permissions-Policy = "accelerometer=(); ambient-light-sensor=(); camera=(); gyroscope=(); magnetometer=(); microphone=(); payment=(); usb=()"
13 Report-To = '''{
14 "group":"report-uri",
15 "max_age":31536000,
16 "endpoints":[
17 {"url":"<url>"}
18 ],"include_subdomains":true}'''
19 NEL = '''{
20 "report_to":"report-uri",
21 "max_age":31536000,
22 "include_subdomains":true
23 }'''

检测响应头安全性

最后,你可以用 这个 在线工具检测站点响应头的安全性,配置了上述的响应头应该可以拿到满分啦。

给部署在 Netlify 上的站点添加 HTTP security headers 增强安全性


参考链接:

❌
❌