如何选择适合自己网站的防盗链

avatar
运维 @又拍云

当你的网站被攻击的时候,当你的资源出现异常访问的时候,又或者是你需要一些特殊的对资源访问的限制时,防盗链的选择你一定要看看。

作为一个优秀的当代攻城狮/程序猿,相信好多人在业余时间都会经营一个自己的博客网站,用于记录一些日常生活小心得,或者是工作遇到过的坑,还可以和他人一起讨论一起成长。看着博客的内容一点点累积,看着访问人数的不断增加,往往让人感觉每天又多了一些期待和成就。

二狗子也有自己的博客。可是有一天,他在又拍云后台发现自己的博客带宽突然飙高了。当时二狗子还以为是有什么技术大佬发现了自己,而自己马上就要成为一代网红技术了,他欢天喜地的下载了访问日志进行分析,结果发现好多国外 IP,而且还有一些蜘蛛爬虫、迅雷的客户端标识。原来不是一炮走红而是被攻击了啊!这还不赶紧限制一下,不然白花花的流量费用家里有矿也伤不起呀。

二狗子飞快找到又拍云在线客服薇薇,大天使薇薇小姐姐从不让人失望,马上为二狗子推荐了一系列的又拍云访问控制功能。

薇薇告诉二狗子通过频繁访问攻击对手网站,通过爬虫等工具爬取图片,甚至直接在网站上引用他人的资源链接等等,这些都是网站管理员经常面临的问题。针对这类问题,又拍云提供了多种访问控制功能,包括 IP 黑白名单,地区访问限制,Referer 防盗链,User-Agent 防盗链,Token 防盗链等等。而具体对应不同的场景也需要选择不同的防盗链,具体选择和介绍薇薇仔细的和二狗子说了起来。

IP 黑名单:“我要把你拉黑!”

如果有一天,你突然发现网站带宽飙高了。通过又拍云提供的访问日志分析发现,有一个 1.2.3.4 的 IP 竟然一直在访问网站,而且你还可以判断出它是恶意访问。这时打开又拍云控制台,将这个 IP 加到了 IP 黑名单里,你会发现带宽瞬间就下去了。

这到底是怎么做到的呢?大家都知道 IP 地址在互联网上具有唯一性,在请求过程中,客户端的 IP 地址通常保持不变。当客户端向服务端(CDN 节点)发起请求时,服务端可以明确地获取到客户端的 IP 地址,因此可以利用 IP 地址的这些特点进行访问控制。把你不希望访问到你网站的 IP 加入 IP 黑名单,从而禁止他们访问你的网站。同时你也可以设置 IP 白名单,仅允许在白名单内的 IP 访问你的资源,其余 IP 一律不允许访问,以此来降低遭到攻击的可能性。

地区访问限制:“我要限制你出境!”

如果你有一个用于上传搞笑视频的的自建网站,但是你希望网站内容只能被国内用户访问,不想流到国外,这个时候要怎么办呢?很简单,只需要你打开又拍云控制台,在地区访问限制项将中国加入白名单就可以啦。

地区访问限制的工作原理和 IP 黑名单一样运用了 IP 地址的唯一性,通过检查 IP 归属地进行限制。你可以将希望访问到文件的地区运营商加入访问限制白名单,不希望的加入访问限制黑名单,从而控制让谁来看到你的文件。

Referer 防盗链:“我就不想让你用!”

如果有些时候你发现你的网站整体访问量并不高,但是其中某些图片、视频,或者部分元素访问量却很高。同时你通过筛选日志发现,访问图片的用户都是来自一些来源不明的网站。这很大可能代表着你的文件被盗链了。

什么是盗链呢?盗链就是有一些网站没有经过你的同意就引用了你网站的内容,但是他们并不是下载了你的内容,而是直接将你的资源链接外链过去,这样就能达成在增加他们网站访问的同时,还让你来掏这部分访问流量的“冤枉钱”。要避开这些吸血虫也非常容易,你只需要打开又拍云控制台,到 Referer 防盗链里添加白名单,将自己的网站域名加进去就可以禁止其他网站引用你的资源链接了。

好,这里暂停一下,二狗子知道大家可能对 Referer 是什么东西很是迷茫,正好薇薇小姐姐有好好讲过,二狗子就来给大家复述一下。

Referer 代表请求来源。当客户端向服务器发送请求时,一般都会携带 Referer 头,告知服务器该请求是从哪个页面链接过来的。当请求发送到 CDN 节点后,CDN 节点检查请求头中所携带的 Referer 字段的信息,然后禁止或者允许符合特定规则(支持正则匹配)的 Referer 请求。

也就是说,只要你开启了 Referer 防盗链,那么从其他网站过来的请求就会被服务器禁止,妈妈再也不用担心网站资源被盗链啦。

User-Agent 防盗链:“你的手机不能看!”

当你的网站是提供一些文件下载的业务,你有自己的客户端,并且只希望用户从你的客户端去下载,而不希望文件被用户通过迅雷或其他下载工具下载时,你一定会需要又拍云 User-Agent 防盗链。

User Agent 中文名为用户代理,简称 UA,它是一个特殊字符串头,能够让服务器识别客户端使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等信息。它和 Referer 防盗链类似,在开启后 CDN 会针对 HTTP 请求头中的 User-Agent 信息,禁止或者允许符合特定 User-Agent 规则的请求。

每一个客户端都拥有自己的专属 User-Agent,我们可以抓包请求头查询到 User-Agent ,然后将自己的 User-Agent 加入白名单,或者将其他想要禁止的客户端 User-Agent 加入黑名单,从而保证用户只从自己允许的客户端下载内容。

讲完了上面这四种防盗链,薇薇告诉二狗子,这四种其实是基础防盗链,主要是针对客户端请求过程中所携带的一些关键信息来验证请求的合法性。这些防盗链的优点是规则简单,配置和使用都很方便。但是在请求过程中,这些信息其实都是可以伪造的,因此如果需要更加严密的守卫文件安全,可以考虑使用高级防盗链规则。

二狗子当然是表示有更好的选择肯定是要继续了解的,并拜托薇薇再好好讲讲高级防盗链。

高级防盗链

Token 防盗链:“想让你看你才能看!”

Token 防盗链适用于具有时效性访问的资源文件,通过设置 Token 密钥,配合签名过期时间来控制资源内容的访问时限。Token 防盗链采用 md5 算法,将密钥、过期时间、文件路径等信息所计算的 md5 值加入到 URL 中,当 CDN 节点在验证请求时,除了验证过期时间,同时还会验证该 md5 值是否匹配,对于不匹配的 md5,说明 URL 被篡改,即使请求未过期也会禁止服务。Token 防盗链的过期时间可自行设置,如果你的网站有些内容,希望付费才能访问,且规定访问有有效期。就可以通过 Token 防盗链来实现。Token 防盗链加密性最高,但是因为时效性等原因,使用不当可能会引起网站访问异常,请慎重开启!

回源鉴权:“回家吧,宝贝!”

如果不希望对方知晓你的防盗链规则原理,或者 CDN 无法满足的特殊防盗链需求,也许也需适合你的防盗链选择就是回源鉴权了。

回源鉴权是一种高级的防盗链方式,需要在源站配置一台鉴权服务器,并设置鉴权方式。之后 CDN 边缘节点每次接受到请求之后,都会回用户源站的鉴权服务器进行验证,验证通过之后才认为是合法请求,CDN 才会继续提供服务。

回源鉴权适用于对防盗链有很高实时性要求的场景,当然因为每次请求都需要鉴权服务器的验证,在开启该功能时也需要考虑到访问量过大时鉴权服务器的压力。

自定义防盗链:“我的地盘我做主!”

如果你喜欢 DIY 功能,想要属于自己的独一无二的防盗链模式。又拍云强大的边缘规则功能也为你提供了防盗链 DIY 服务,通过提供的语法自行设置算法规则,既灵活又高效,让你的防盗链独一无二。

具体规则可以参考:边缘规则案例 - 自定义防盗链[help.upyun.com/knowledge-b…]

听完薇薇的讲解,二狗子才知道不同的防盗链可以针对不同的网络访问疑难杂症。一个小小的防盗链还分了这么多的种类,可谓种类繁多。看来只有亲自体验过才能知道什么是适合自己的防盗链了!

推荐阅读

HTTP/3 来了,你了解它么?

SSL 证书变革之时已至,这些变化你都清楚吗?