最近看一篇文章,有位作者提出了 BackblazeB2连接 CloudFlare CDN的方法,但是B2的B2会泄露 bucket的名字,有一定的风险导致您的图片被其他人进行盗刷。不过值得注意的是,任何人都可以使用 BackblazeB2,也可以通过它直接进入到源码中进行复制粘贴。而且,这个网站的所有信息都经过了技术处理,隐藏了起来,正常的技术手段是无法屏蔽的。

举个例子:

B2提供的域名格式为:https://f002.backblazeb2.com/file/bucket/xxx.txt

使用CloudFlare加速后域名https://b2.domain.com/file/bucket/xxx.txt

如果我在B2中建立了一个叫做 eswink bucket,我可以使用您的 CloudFlare 的域名https://b2.domain.com/file/eswink/xxx.txts,这会使你的 CloudFlare 的流量被消耗掉。这是为了更快地为您服务,下面会有推荐的,如果您看不到(没有取消),它会认为您需要它来为您服务,也会给您带来麻烦。

或我可以直接登录您的网站:https://f002.backblazeb2.com/file/eswink/xxx.txt

前提准备

如果您的B2域名还未接入CloudFlare,请首先接入再进行以下操作。当您找到您想要的资料库时,您可以直接点击资料库名称或其后的链接地址进行资源存取。

创建转换规则

CloudFlare后台 – 规则 – 转换规则 – 创建转换规则 – 重写URL

继续填写:

  • 规则名称:随意写
  • 字段:选择“主机名”
  • 运算符:选择“等于”
  • 值:填写您在CloudFlare上对B2的加速域名(你自己的域名

然后路径选择“重写到 – 选择Dynamic”,并填写:

concat("/file/bucket", http.request.uri.path)

其中bucket改成你自己的存储桶名称,然后选择部署就行了。

如何通过使用CloudFlare的转换规则实现隐藏bucket路径插图3

优化后

优化前,我们访问路径是:https://b2.domain.com/file/bucket/xxx.txt/com

优化路径如下:https://b2.domain.com/xxx.txt/com

” file/bucket/”字段已被删除

删除不需要的响应头

Backblaze B2会在请求的响应头中添加以下几个header参数:

  • x-bz-content-sha1
  • X-bz-file-i d
  • X-bz-file-name
  • X-bz-upload-timestamp

“虽然没有太大的作用,但从数据上就能看出,你使用的是B2,而且这种东西对我们来说也没什么用,所以我们可以用 CloudFlare修改一下。但我觉得很难有效地修改它,我得花大量的时间去看那些 reference格式,还要仔细分析,看看哪一种比较合适,哪一种比较专业。”

仍然在变换的法则中-建立变换法则-修正应答标题。如果用户所请求的内容刚好在缓存中,那么将内容直接返回给用户。

如何通过使用CloudFlare的转换规则实现隐藏bucket路径插图4

主机名那些和上面的一样:

然后那里全部选“Remove”,最后填写上面那几个header头部即可。如果找不到,还可以再进行一次检查,如果两次都没有发现规则,那就会进入下一次,因为在逻辑正确的情况下,两次选择就足够了。

总结

CloudFlare与B2间的数据传送是自由的,使用 CloudFlare变换的法则,可以将 bucket的名字掩盖起来,从而使得 URL变得更为友好,从而可以从某种意义上防止BackblazeB2失窃的危险。本文也只是提供了另一种解决方案,其中可能有错误,也可能有正确的,但是也有可能存在两种情况共存(可以互补的缺陷)。