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

如何从技术上“绞杀”盗链者?,第1张

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

声明:本文来自微信公众平台CSDN(ID:CSDN新闻),创作者:阿文,并授权百度站长工具截取发布。

很多站长都会遇到一个头疼的问题,就是自己网站的资源经常被盗,包括文字,照片,视频,二进制或者压缩包。这种被盗资源不仅会造成网站访问量的损失,还会对经济发展造成一定的损害。

除了相关法律法规,如《中华人民共和国著作权法》使著作权人或著作权使用者能够根据法律法规控制和限制一些未被权利非法应用的网站多媒体系统资源外,我们还可以根据一些方式方法对访问者进行控制,使其不能随便窃取相关资源。在这里,我们将详细介绍网站常用的防盗措施及其优缺点。

用户代理防盗

User-Agent的第一部分包括一个特征字符串数组,网络层协议的对端使用该字符串数组来标识所需客户端代理ip软件的应用类型、计算机 *** 作系统、手机软件房地产开发商和版本信息。不同的电脑浏览器和手机客户端都自带用户代理。例如,Chrome电脑浏览器的用户代理是:

用户代理:Mozilla/5.0(Macintosh;英特尔MacOSX10_14_5)appleWebKit/537.36(KHTML,像壁虎一样)Chrome/75.0.3770.90Safari/537.36

例如,curl命令使用以下用户代理访问url:

用户代理:curl/7.54.0

或者应用一些计算机语言库,比如Python的request库,它的用户代理是:

r.request.headers{'用户代理':'python-requests/2.18.4',……}

这样,我们可以限制一些用户代理的需求。以nginx为例,我们可以区分HTTP用户代理,禁止他们访问资源。比如下面,如果user-agent等同于Java|python-urllib等。,回到403,然后拒绝这个手机客户端访问资源。

if($http_user_agent~“mozilla/4.0$|mozilla/5.0$|java|apachebench|python-urllib|^$”){return403;}

但是,这种方法不能完全禁止某些需求,因为用户代理是由客户定义的。以curl为例,如下图。根据-H特定用户代理的请求头信息内容,如果对方只是指定了你的信用黑名单标准,那么很容易绕过限制。

curl-H"用户代理:xxxx"

referer防盗链

Referer的第一部分包括来自网页的当前所需网页的详细地址,表示根据来自网页的连接访问当前网页。在下面显示的请求标题中,它的referer是https://www.google.com/,,这表明它来自谷歌。

:authority:developer.Mozilla.org:method:GET:path:/zhCN/docs/Web/HTTP/Headers/Referer:scheme:httpsaccept:text/html,application/xhtmlxml,application/XML;q=0.9,image/webp,image/apng,*/*;q=0.8,应用/签约-交换;v=b3接受-编码:gzip,deflate,br接受-语言:zh-CN,zh;q=0.9,en;q=0.8cookie:dwf_SG_task_completion=FalseDNT:1referer:https://www.google.com/升级-不安全-请求:1用户-代理:Mozilla/5.0(Macintosh;英特尔MacOSX10_14_5)appleWebKit/537.36(KHTML,像壁虎一样)Chrome/75.0.3770.90Safari/537.36

以nginx为例,我们可以限定特定网站域名的referer:

if($http_referer~*www。xxx.com){return403;}

但这种方式并不能完全禁止某些网站域名要求,因为referer客户也可以自行设定要求。以curl为例,如下图,根据-H特定referer:XXXXX的请求头信息内容,可以轻松绕过限制。

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

IP防盗链

说白了,限制访问特定IP或IP段。比如一些网络爬虫经常抓取网站资源,我们可以对其IP进行限制。

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

允许1.1.1.1/24#允许IP段访问

拒绝所有#禁止所有IP访问。

令牌防盗链

三个原HTTP的第一个字段名可以防止客户随便窃取资源,但是缺点非常明显,比如容易被仿冒。

以nginx为例安装secure_link控制模块,默认设置不安装。要应用此控制模块,您必须在编译程序时指定以下主要编译器参数:

-with-http_secure_link_module

安全防盗链基本原理:

  • 客户对资源的访问;

  • 网络服务器根据密钥、过期时间和文档uri将其转换为数据加密字符串;

    使用数据加密字符串和过期时间作为主要参数,跟踪文档下载链接;

    nginx下载服务器接受到期时间,也应用到期时间,配备密钥和文档uri将其转换为数据加密字符串;

    对比客户传输的加密数据串和自己转换的加密数据串,都是允许免费下载的,但是403不一致。

    实际设备和应用可参考:

    https://nginx.org/en/docs/http/ngxhttpsecurelinkmodule.html.

    自然,除了这类方法,你还可以使用nginxlua独立完成一些自制的防盗链对策。

    【结束】

    欢迎分享,转载请注明来源:内存溢出

    原文地址: http://outofmemory.cn/zz/763242.html

    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    上一篇 2022-05-01
    下一篇 2022-05-01

    发表评论

    登录后才能评论

    评论列表(0条)

    保存