Loading... ## 引言 前段时间出现过一回,几个印度`ip`狂刷我们的`OSS`,导致`OSS`资费爆炸。 认真检查过后,发现是很单纯的批量访问,连`referer`都没带有的那种,根本就不是从网页正常请求的。 所有考虑了一下,搞一下这个防盗链吧,另外再简单搞个跨域验证,避免一下小白搞我们服务。 ## 实现 首先进阿里云官网(我这里以阿里云为例,腾讯云、新浪云之类的就自己摸索,差不多的) 然后找到`CDN`和`OSS`的管控台。 ### `CDN`内容分发网络 #### 跨域保护 ![CDN的域名配置](https://static.hw13.cn/usr/uploads/2024/06/43475858.png) 找到“内容分发服务(`CDN`)”下的“域名管理”菜单,确定你要管控的域名 点击对应的“管理”按钮 ![节点响应头](https://static.hw13.cn/usr/uploads/2024/06/2105992292.png) 进到对应域名配置后,找到这个“缓存配置”下的“节点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`的资源了(还是有办法绕开的) ![新增响应头设置](https://static.hw13.cn/usr/uploads/2024/06/1651619923.png) 注意,这里的`Access-Control-Allow-Origin`需要开启跨域验证,否则不会有效果 其他的倒是不需要做这种额外设置。 设置完之后的样子是这样的: ![响应头设置结果](https://static.hw13.cn/usr/uploads/2024/06/3041665497.png) **注意:设置完成后,要稍等一会,等显示“配置成功”才行,这是因为节点应用需要时间** #### 防盗链保护 找到“访问控制”菜单下的“`Referer`防盗链”选项卡,找到这个“修改配置”按钮 ![防盗链页面](https://static.hw13.cn/usr/uploads/2024/06/1158560644.png) 点击修改,弹出窗口中需要填写具体的规则,比如我这里: 我设置只有我的网站(`trunning.cn`域名下的所有页面)才能访问,其他访问的话,都会返回`403`状态码禁止访问。 ![防盗链设置](https://static.hw13.cn/usr/uploads/2024/06/3203409902.png) 但是要注意后面勾选一下这个“忽略`scheme`”,也就是不管访问的是`http`协议还是`https`协议,都会被这个匹配到。 ### `OSS`配置防盗链 `OSS`配置的防盗链,就跟上面`CDN`基本一致,就不再赘述了。 下面这个是进入的方式: 你具体的`bucket`名字 -> 数据安全 -> 防盗链 -> 设置 ![OSS防盗链配置](https://static.hw13.cn/usr/uploads/2024/06/3694064470.png) 瑞思拜~ 下班 欢迎关注拓行公众号,分享各种技术博客文章拓行——奋勇进取,开拓未来,砥砺前行 最后修改:2024 年 06 月 20 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果您对各种技术博客文章感兴趣,欢迎关注拓行公众号,分享各种专业技术知识~