WEB防盗链

什么是防盗链

防盗链不是一根链条,正确的停顿应该是防·盗链——防止其他网站盗用我的链接。

如何实现防盗链

  1. IP黑白名单

直接配置请求者的IP黑白名单。这个方法虽然有效,但必须要知道请求者的具体IP信息,可适用的场景比较有限。

实现方式以nginx为例

nginx allow & deny https://zhuanlan.zhihu.com/p/378026632

1、allow 和 deny 指令在 ngx_http_access_module 模块中。

2、两个指令分别表示允许或禁止源 IP 访问,用于对源 IP 做访问控制。

3、nginx 是按照自上而下的顺序进行匹配,匹配到一个就不往下继续了

4、遇到 return 指令时 return 指令还是会生效

# ngx_http_access_module
server {
    listen 8080;
    server_name _;

    charset "utf-8";
    location / {
        deny all;
        allow 192.168.135.1;
        #default_type text/plain;
        #return 200 "$remote_addr 正常访问 3";
        #echo "$remote_addr 正常访问 5";
    }
}
  1. Referer 防盗链

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

    示例: gitee 使用了此种方式。

    有两种情况,Referer不会被发送:

    • 来源页面采用的协议为表示本地文件的“file”或者“data”URL。
    • 当前请求页面采用的是非安全协议,而来源页面采用的是安全协议(Https)。
      Referer很容易伪造,所以Referer防盗链安全性较低。
  2. User-Agent 防盗链

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

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

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

  3. Token 防盗链(时间戳防盗链)

    时间戳防盗链可以通过对时间有关的字符串进行签名,将时间、签名信息通过一定的方式传递给CDN边缘节点服务器进行鉴权,从而正确响应合法请求、拒绝非法请求。相比referer防盗链,时间戳防盗链的安全性更强。

    原理

    时间戳防盗链的目的是使的每个请求的url都具有一定的是“时效性”,所以url本身需要携带过期时间的相关信息,同时还需要确保这个过期时间不能被恶意修改。因此采用md5算法, 将key、过期时间、文件路径等信息进行加密得到签名加入url,并在CDN节点进行验证,当 CDN 节点在验证请求时,除了验证过期时间,同时还会验证该 md5 值是否匹配,对于不匹配的 md5,说明 URL 被篡改,即使请求未过期也会禁止服务。

    举例

    /test.ts?key=68ddbe535557d6630a19cebde0cb9252&t=1481106349

    适用场景

    • 适用于对url有一定时效性的场景。
    • 如果盗链者定期的更新url,这种方法也会失效。
  4. 回源鉴权防盗链

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

    适用于:

    • 客户技术实力较强,又不希望第三方公司知悉其防盗链原理。
    • CDN无法满足客户特殊的防盗链需求时,可使用回源鉴权防盗链。
  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值