HTT:如何从技术上“绞杀”盗链者?

作者|阿文

责编|郭芮

很多站长都会遇到一个很头疼的问题,那就是自己网站的资源经常被盗用,有文字、图片、视频、和二进制或压缩文件,这些资源被盗用后除了导致网站流量丢失之外、还会带来一些经济上的损失。

除了相关法律,例如《中华人民共和国著作权法》可以使版权或著作权所有者通过法律途径来约束和限制一些未经授权非法使用网站多媒体资源,我们还可以通过一些技术手段来约束访问者,使其无法随意盗取相关资源,下面我们就介绍下网站常用的防盗措施和其优势和劣势。

User-agent防盗

韩国国会将讨论如何提高加密货币交易透明:金色财经报道,韩国国会将于今日举行一场题为“如何提高加密货币交易透明度”的研讨会。该研讨会将讨论有关防止和建立监管加密交易的系统的问题。据报道,此前国会全体会议已通过一项特别法案,旨在引入一种数字资产业务报告系统,包括客户身份识别和建立反义务。如果政府签署该法律,新的反法案可能最早在2021年3月开始阻止与非法暗网相关的加密交易。国会议员Lee Soo-jin表示,区块链是数字经济的根基,透明度是关键,但随着加密货币被用于犯罪活动,负面形象开始积累,需要通过与调查机构的技术合作来防止。[2020/7/10]

User-Agent首部包含了一个特征字符串,用来让网络协议的对端来识别发起请求的用户代理软件的应用类型、操作系统、软件开发商以及版本号。不同的浏览器客户端都会携带自己的user-agent,例如Chrome浏览器的user-agent是:

声音 | 微软李国平:应用区块链技术应多思考如何赋能、少谈颠覆:据经济观察网12月6日消息,微软中国金融行业总监李国平表示,第一,今天应用区块链技术,应该多思考如何赋能,少谈颠覆。他认为其实在从传统业态向数字生活,数字经济迈进的过程中,有很多行业场景存在痛点和短板,在整个信息化进程中如何补足现有实体经济中的这些问题,赋能现有业务,提高效率,降低成本,是区块链应用最应该思考的问题;第二,科技向善。今天的区块链技术、人工智能技术等,公众是存在认知差的。出现了认知差,就存在炒作的空间,就可能有泡沫,还包括新技术滥用数据等问题。因此在应用新的技术时,要在态度上端正,敬畏监管,敬畏客户,敬畏可持续发展,这样才能走的更远,更稳;第三,从网络效应原理来看,网络是越大价值越大。从最早的局域网到以太网到现在整个互联的世界,网络的效应是需要扩大的。因此今天谈公有链,链与链之间有没有标准?全球有没有标准?中国有没有标准?很多企业资产能不能链互链?思考和解决这些问题,有助于区块链的应用范围和价值的扩大。[2019/12/7]

user-agent:Mozilla/5

Genesis曾向三箭资本提供23.6亿美元的贷款:7月19日消息,Digital Currency Group旗下加密货币贷款机构Genesis曾向对冲基金三箭资本(3AC)提供23.6亿美元贷款。The Block获得的文件强调了3AC欠Genesis的23.6亿美元未偿还贷款余额。这些文件还显示,这些债务的抵押不足,上个月Genesis试图通过在纽约的美国仲裁协会(AAA)启动对3AC的仲裁程序来收回部分贷款。而在6月底聘请咨询公司Teneo监督3AC清算后,Genesis似乎暂停了仲裁程序。(The Block)[2022/7/19 2:21:31]

但是这种办法并不能完全禁止掉一些请求,因为user-agent是客户定义的,以curl为例,如下所示。通过-H指定user-agent的请求头信息,如果对方恰好指定你的黑名单规则,则可以很轻松的绕过限制。

curl-H"User-Agent:xxxx"

referer防盗链

Referer首部包含了当前请求页面的来源页面的地址,即表示当前页面是通过此来源页面里的链接进入的。如下所示的requestheaders中,其referer为https://www

但是这种办法也并不能完全禁止掉一些域名请求,因为referer客户也是可以自定义的。以curl为例,如下所示,通过-H指定referer:XXXXX的请求头信息,就可以很轻松的绕过限制。

curl-H"referer:http://www.baidu.com"

IP防盗链

顾名思义,即对指定IP或IP段进行限制访问。例如一些爬虫经常频繁爬取网站资源,我们可以对其IP进行限制。

以nginx为例,nginx的ngxhttpaccess_module模块可以用来设置允许/禁止哪些IP或IP段访问:

allow1.1.1.1/24#允许IP段访问

denyall#禁止所有IP访问

token防盗链

上述的三种原生HTTP首部字段都能防止用户随意盗取资源,但是其劣势相当明显,比如都极容易被伪造。

以nginx为例安装secure_link模块,默认是没有安装的,要使用这个模块必须在编译时指定下列编译参数:

--with-http_secure_link_module

securelink防盗链原理:

用户访问资源;

服务器根据secret密钥、过期时间、文件uri生成加密串;

将加密串与过期时间作为参数跟到文件下载地址的后面;

nginx下载服务器接收到了过期时间,也使用过期时间、配置里密钥、文件uri生成加密串;

将用户传进来的加密串与自己生成的加密串进行对比,一致允许下载,不一致403。

具体的配置和使用可以参考https://nginx.org/en/docs/http/ngxhttpsecurelinkmodule.html。

当然除了这种方式,你也可以使用nginxlua来自行实现一些自定义的防盗链措施。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

链链资讯

[0:0ms0-3:975ms