网站安全-图床的防护与优化
之前说了 CDN 的防护措施,接下来说说七牛云的防护。
七牛云是在第二天才生成账单的(比如今天 8~9 点会结算昨天的费用)。如果欠费了,在欠费保护期内还能使用,过了后就会停用,所以会产生这种赊账的情况。
防盗链
对于网络攻击的话,有以下方式来防护:
- 设置告警,参考官方文档。但只有邮件和短信的方式,如果是三更半夜的话可能不能及时做出反应
- 设置防盗链与白名单:Referer 防盗链,这个在博客搭建系列中的图床篇也讲过。除此之外,还有时间戳防盗链,IP 黑名单等,可以在 CDN => 域名管理 => 配置 => 访问控制 进行设置
- 设置回源鉴权:参考 回源鉴权 - 七牛开发者中心。Referer 是可以伪造的,而回源鉴权就是每次访问图片时需要带上参数,去自己的一个服务器上鉴权,通过了才能访问图片。该功能设置起来较为麻烦
按需选择,一般来说 Referer 防盗链就够了。
设置单 IP 访问频率限制 QPS,以及带宽
该设置很有用,甚至可以说是防止被刷流量的核心操作。
单 IP 访问阈值,就是限制每秒多少次请求,这个需要根据你的网站以及资源情况进行设置,例如平均每篇博客 15 张图片,那么就可以设置成 15。
这个设置没法直接设置,需要提交工单找工程师进行设置:七牛技术支持平台
配置告警
预警设置需要根据自己的网站实际情况。可以查看自己平时正常的流量和带宽(在 CDN-概览中,可以看今天和本月的情况):
然后在告警配置中添加:
提高命中率
我们使用了 CDN,那么自然是希望别人访问我们网站时,优先从 CDN 服务器获取数据;如果 CDN 没有,才会回源,回源就相当于没有命中(和计算机组成原理中 Cache 的命中率类似)。
命中率越高,说明回到你的服务器/源站的数量越少。一方面你的服务器压力越轻,另一方面浏览的体验也越好。
在七牛开发者中心中搜索命中率,可以看到相关文档:命中率_使用指南
登录七牛开发者平台后,进入 CDN 控制台,选择【统计分析】,点击【命中率】进入查询界面:
然后可以查询命中率(最长统计最近 30 天的):
如果你的命中率较低,原因可能是:
- 源站动态资源较多,多为不可缓存的内容,也会导致频繁回源拉取。
- 资源访问量较低,文件热度不够,CDN 收到请求较少无法有效命中缓存。
- 缓存配置不合理,缓存时间过短,CDN 节点频繁回源。
- 访问资源的 URL 带参数,并且参数不断变化。当用不同的 URL 去访问 CDN 的时候,CDN 会认为这是一个新请求(即便这两个不同的 URL 其实是访问到了同一个文件,并且该文件已经缓存在节点上),会回源去拉取所请求的内容。例如,有时候给图片后面带个时间参数,或者长宽、水印等参数,都会影响。
那么对应的解决方法为(先打开配置,参考缓存配置 - 七牛开发者中心):
- 延长静态资源的缓存期。例如图片等资源,后缀为
.jpg;.jpeg;.png;.bmp;.gif;.webp;.ico
,缓存为 1 年(七牛云最多支持一年) - 根据自身情况,选择是否忽略 URL 参数
参考
降低被恶意访问、盗量的风险_最佳实践_对象存储 - 七牛开发者中心
这几个方法可以大大提高 CDN 的命中率,以七牛云对象存储为例_设置缓存时长和忽略参数 - 陶小桃 Blog