更新日期:Wed Aug 26 2020 10:10:12 GMT+0800,阅读量:
请访问原文链接:在 CloudFlare 部署 HTTP Security Header 查看最新版。原创作品,转载请保留出处。
作者主页:sysin.org
1. Cloudflare Works 介绍
以下引自官网,更多内容请参看官方文档 。
“
Cloudflare Workers provides a serverless execution environment that allows you to create entirely new applications or augment existing ones without configuring or maintaining infrastructure.
使用 Cloudflare Workers® 进行无服务器计算
网络就是计算机®
在覆盖 100 个国家/地区超过 200 个城市的 Cloudflare 全球云网络上构建无服务器应用程序。Cloudflare Workers 提供了一个轻量级的 JavaScript 执行环境,允许开发人员在不配置或不维护基础设施的情况下 (sysin),扩充现有应用程序或创建全新应用程序。
在边缘运行 JavaScript
请在全球数以百计的 Cloudflare 数据中心中运行 JavaScript Service Workers。修改站点的 HTTP 请求和响应,发出并行请求或从边缘生成响应。
”
注意:Workers 免费版请求数限制为 10万/每天。
2. 创建一个 Works
登录 Cloudflare,选择你的“域名” > Works,或者直接点击右侧面板“Works”,点击“创建 Worker”,覆盖粘贴以下 js 脚本,点击“保存并部署”。可以将创建的 Work 修改一个友好名称,如“set-header”。
备注:首次启用该功能有个选择“子域”的向导,根据提示点击下一步即可。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 const securityHeaders = { "Content-Security-Policy" : "upgrade-insecure-requests" , "Strict-Transport-Security" : "max-age=31536000; includeSubDomains; preload" , "X-Xss-Protection" : "1; mode=block" , "X-Frame-Options" : "SAMEORIGIN" , "X-Content-Type-Options" : "nosniff" , "Referrer-Policy" : "strict-origin-when-cross-origin" , "Permissions-Policy" : "camera=(), microphonee=()" , "X-Author" : "gc(at)sysin.org" }, sanitiseHeaders = { Server : "sysin.org" }, removeHeaders = [ "Public-Key-Pins" , "X-Powered-By" , "X-AspNet-Version" ]; async function addHeaders (req ) { const response = await fetch (req), newHeaders = new Headers (response.headers ), setHeaders = Object .assign ({}, securityHeaders, sanitiseHeaders); if (newHeaders.has ("Content-Type" ) && !newHeaders.get ("Content-Type" ).includes ("text/html" )) { return new Response (response.body , { status : response.status , statusText : response.statusText , headers : newHeaders }); } Object .keys (setHeaders).forEach (name => newHeaders.set (name, setHeaders[name])); removeHeaders.forEach (name => newHeaders.delete (name)); return new Response (response.body , { status : response.status , statusText : response.statusText , headers : newHeaders }); } addEventListener ("fetch" , event => event.respondWith (addHeaders (event.request )));
备注:具体 Header 内容请根据实际情况修改。
3. 添加路由
即将上述 worker 关联到需要执行的 URL。
示例:关联到该域名下的所有 URL,需要创建两条路由,分别关联到上述创建的 Worker(set-header)。
1 2 *.sysin.org/* sysin.org/*
4. 验证
curl
1 curl -I https://sysin.org
或者在线检测
https://securityheaders.com/
文章用于推荐和分享优秀的软件产品及其相关技术,所有软件默认提供官方原版(免费版或试用版),免费分享。对于部分产品笔者加入了自己的理解和分析,方便学习和研究使用。任何内容若侵犯了您的版权,请联系作者删除。如果您喜欢这篇文章或者觉得它对您有所帮助,或者发现有不当之处,欢迎您发表评论,也欢迎您分享这个网站,或者赞赏一下作者,谢谢!
☑️ 评论恢复,欢迎留言❗️敬请注册!点击 “登录” - “用户注册 ”(已知不支持 21.cn/189.cn 邮箱)。请勿使用联合登录(已关闭) 。