引言

前段时间出现过一回,几个印度ip狂刷我们的OSS,导致OSS资费爆炸。

认真检查过后,发现是很单纯的批量访问,连referer都没带有的那种,根本就不是从网页正常请求的。

所有考虑了一下,搞一下这个防盗链吧,另外再简单搞个跨域验证,避免一下小白搞我们服务。

实现

首先进阿里云官网(我这里以阿里云为例,腾讯云、新浪云之类的就自己摸索,差不多的)

然后找到CDNOSS的管控台。

CDN内容分发网络

跨域保护

CDN的域名配置

找到“内容分发服务(CDN)”下的“域名管理”菜单,确定你要管控的域名

点击对应的“管理”按钮

节点响应头

进到对应域名配置后,找到这个“缓存配置”下的“节点HTTP响应头”选项下的“添加”按钮

这个就是内容分发网络节点(数据返回的节点)可设置的响应头配置

也就是HTTP协议的响应部分配置,可以在这里自定义你需要的响应,我这里增加几个跨域配置:

  • Access-Control-Allow-Origin: 具体的域名(需要包括协议)
  • Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
  • Access-Control-Allow-Headers: Content-Type, X-Requested-With
  • Access-Control-Max-Age: 3600 (单位秒)

设置后,常规的浏览器请求就无法轻松访问到这个CDN的资源了(还是有办法绕开的)

新增响应头设置

注意,这里的Access-Control-Allow-Origin需要开启跨域验证,否则不会有效果

其他的倒是不需要做这种额外设置。

设置完之后的样子是这样的:

响应头设置结果

注意:设置完成后,要稍等一会,等显示“配置成功”才行,这是因为节点应用需要时间

防盗链保护

找到“访问控制”菜单下的“Referer防盗链”选项卡,找到这个“修改配置”按钮

防盗链页面

点击修改,弹出窗口中需要填写具体的规则,比如我这里:

我设置只有我的网站(trunning.cn域名下的所有页面)才能访问,其他访问的话,都会返回403状态码禁止访问。

防盗链设置

但是要注意后面勾选一下这个“忽略scheme”,也就是不管访问的是http协议还是https协议,都会被这个匹配到。

OSS配置防盗链

OSS配置的防盗链,就跟上面CDN基本一致,就不再赘述了。

下面这个是进入的方式:

你具体的bucket名字 -> 数据安全 -> 防盗链 -> 设置

OSS防盗链配置

瑞思拜~

下班


欢迎关注拓行公众号,分享各种技术博客文章

拓行——奋勇进取,开拓未来,砥砺前行

最后修改:2024 年 06 月 20 日
如果您对各种技术博客文章感兴趣,欢迎关注拓行公众号,分享各种专业技术知识~