个人使用阿里云oss出现晚上被刷流量而损失钱财的例子屡见不鲜。我也是前几天才买来试试水,幸好有热心网友提醒,不然哪天可能就要完蛋了!

所以,为了避免被刷流量,我在网上浏览了各种不同的技巧,最终按照我自己认为恰当的方法完成了一套香港 oss + CloudFlare 的下行免流 & 阻止他人获取 bucket id 的方法。

配置 oss

免下行流量

想要下行免流,必须符合条件!

适用于 Cloudflare CDN 与阿里云 OSS 的共同客户,并且源站在阿里云 OSS 除中国大陆外的指定地区或国家,同时使用的存储类型为同城冗余标准型或本地冗余标准型的客户。

如果不符合,也可以考虑使用其他免费的云存储:如 backblaze

自定义域名配置

关于 oss 的配置,可以参照此处。我已经写过文章了。使用阿里云 oss 存储数据。或许会有一些地方不同,下面会详细陈述。

创建 Bucket 的注意事项

请尽量使用复杂的,不容易被猜到的 bucket ID 。毕竟总长度能到63位,咱自己也没必要记住它。如果被猜出,很可能被刷流量。

image-20210830143445825

绑定域名

与之前文章操作中不同的是,你需要将域名先绑定到 CouldFlare 上,并 A 记录到自己的服务器(开启橙标防护)。

image-20210830142709079

别忘了在 oss 的 bucket 中绑定需要的自定义域名。

image-20210830143745662

获取SSL证书

为了避免无限重定向,我们需要自己的服务器上也有 HTTPS 。

image-20210830143024900

设定反向代理

反向代理的域名是 oss 的 Bucket 域名(概览里)。请记住保密!不要泄露!

image-20210830143159251

测试

现在各项应该已经正常了,你可以上传一个文件到 oss 上测试一下。自定义域名中是否可以正常查看图片等。

image-20210830144042560

再试试让它报错(直接访问根目录也行)

image-20210830144147128

很明显,这里显示了我们的原地址 。坏人可以轻松通过这种方法刷爆流量,一晚上倾家荡产(没几万,几千也不是问题)

image-20210830144305067

解决源站根目录与404报错

根目录报错

想解决根目录报错,需要依靠 CloudFlare 的 Workers 。

创建一个 workers ,并把它设置到自定义域名,编辑内容。

image-20210830144852948

配置内容如下:

addEventListener('fetch', event => {
  event.respondWith(handleRequest(event.request))
})

/**
 * Fetch and log a request
 * @param {Request} request
 */


async function handleRequest(request) {
  return new Response('Hello!', { status: 200 })
}

将它设定到我们的域名。

image-20210830144754406

如此操作后,访问根目录就只会提示 Hello 了。

image-20210830145219149

404 报错

解决404报错需要我们自定义反向代理中的 404 页面,避免使用 oss 的报错。

image-20210830145314114

添加以下文本即可

image-20210830145441294

    proxy_intercept_errors  on;


    error_page  500 502 503 504 /404.html;
    error_page  400 404 /404.html;
    
    location = /404.html{
        root  /www/wwwroot/YOUR-HOST-HERE;
    }

你需要自己写一个 404.html 放到,

/www/wwwroot/YOUR-HOST-HERE;

或者改到其他任何你自定的404页面。

保存它并刷新缓存。

image-20210830145743947

已成功,漂亮。

后记

理论上这么做已经可以避免它人获取到你的 bucket ID 和其他什么东西了。但我目前也没法完全确定此方法安全,希望还能和各位交流交流! 欢迎提出各种意见!

恶心人小技巧

其实我们也可以不适用 404 页面,而是伪造一个 oss 报错。

image-20210830151151799

奈何我一直搞不明白如何直接返回 XML ,还是希望能在评论请教一下😂。

文章目录