引言
前段时间出现过一回,几个印度ip
狂刷我们的OSS
,导致OSS
资费爆炸。
认真检查过后,发现是很单纯的批量访问,连referer
都没带有的那种,根本就不是从网页正常请求的。
所有考虑了一下,搞一下这个防盗链吧,另外再简单搞个跨域验证,避免一下小白搞我们服务。
实现
首先进阿里云官网(我这里以阿里云为例,腾讯云、新浪云之类的就自己摸索,差不多的)
然后找到CDN
和OSS
的管控台。
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
名字 -> 数据安全 -> 防盗链 -> 设置
瑞思拜~
下班