免责声明:本文来自微信公众号CSDN(ID:CSDNnews),作者:Arvin,Hyun-woo Technology转载授权发布。 许多网站管理员会感到非常头疼,那就是他们网站的资源经常被盗,包括文本,图片,视频以及二进制或压缩文件。 这些资源被盗后,除了网站流量的损失外,还将带来一定的经济损失。 除了《中华人民共和国版权法》等相关法律允许版权或版权所有者通过法律手段限制和限制对网站多媒体资源的某些未经授权和非法使用外,我们还可以使用一些技术手段来限制 访客使他们成为不可能随意窃取相关资源。 下面我们将介绍网站上常用的防盗措施及其优缺点。 用户代理防盗User-Agent头包含一个特征字符串,该字符串允许网络协议的对等方标识发起请求的用户代理软件的应用程序类型,操作系统,软件开发人员和版本号。 不同的浏览器客户端将携带自己的用户代理。 例如,Chrome浏览器的用户代理为:用户代理:Mozilla / 5.0(Macintosh; Intel Mac OS X 10_14_5)AppleWebKit / 537.36(KHTML,例如Gecko)Chrome /75.0.3770.90例如在Safari / 537.36中 ,curl命令用于访问URL,并且带有它的user-agent如下:User-Agent:curl / 7.54.0或某些编程语言库,例如Python的请求库,其user -agent为 :r.request.headers {'User-Agent': 'python-requests / 2.18.4',……}在这种情况下,我们可以限制一些用户代理请求。 以nginx为例,我们判断httpuseragent禁止其访问资源。 例如,下面,如果user-agent等于Java | python-urllib等,则返回403以拒绝这些客户端访问资源。 if($ http_user_agent〜“ Mozilla / 4.0 $ | Mozilla / 5.0 $ | Java | ApacheBench | Python-urllib | ^ $”){返回403;}但是此方法并未完全禁止某些请求,因为用户代理是Customer -定义,以curl为例,如下所示。 通过-H指定用户代理的请求标头信息。 如果对方碰巧指定了您的黑名单规则,则您可以轻松绕过该限制。 curl -H“ User-Agent:xxxx” Referer防窃听链接的Referer标头包含当前请求页面的源页面的地址,这意味着当前页面是通过源页面中的链接输入的。 在下面显示的请求标头中,如果引荐来源网址为https://www.google.com/,则表示来源是Google。 :authority:developer.mozilla.org:method:GET:path:/ zhCN / docs / Web / HTTP / Headers / Referer:scheme:httpsaccept:text / html,application / xhtml + xml,application / xml; q = 0.9, 图片/ webp,图片/ apng,* /*; q = 0.8,application / signed-exchange; v = b3 accept-encoding:gzip,deflate,br accept语言:zh-CN,zh; q = 0.9,en; q = 0.8 cookie:dwf_sg_task_completion = False dnt: 1个引荐来源:https://www.google.com/ upgrade-insecure-requests:1个用户代理:Mozilla / 5.0(Macintosh; Intel Mac OS X 10_14_5)AppleWebKit / 537.36(KHTML,例如Gecko)Chrome / 75.0.3770.90 以nginx为例,以Safari / 537.36为例,我们可以限制对指定域名的引用:if($ http_referer〜* www.xxx.com){return 403;}但是该方法并未完全禁止某些域名请求,因为 推荐客户也可以自定义。 以curl为例,如下所示,通过使用-H指定Referer:XXXXX请求标头信息,可以轻松绕过该限制。 curl -H“ referer:http://www.baidu.com”顾名思义,IP防盗链接将限制对指定IP或IP段的访问。 例如,某些爬网程序经常频繁地爬网网站资源,我们可以限制其IP。 以nginx为例,nginx的ngxhttpaccess_module模块可用于设置允许/禁止访问哪些IP或IP段:allow 1.1.1.1/24#允许IP段访问deny all#禁止所有IP访问令牌。 防盗链。 以上三个本机HTTP标头字段可以防止用户随意窃取资源,但是它们的缺点非常明显,例如,它们都很容易伪造。 以nginx为例,安装secure_link模块。 默认情况下未安装。 要使用此模块,在编译时必须指定以下编译参数:--with-http_secure_link_modulesecure link防盗链接的原理:用户对资源的访问; 服务器根据密钥,到期时间,文件uri生成一个加密的字符串; 加密后的字符串和有效时间用作跟随文件下载地址的参数; Nginx下载服务器接收到期时间,并且还使用到期时间,配置中的密钥和文件uri来生成加密的字符串; 将的加密字符串与自身生成的加密字符串进行比较,并允许下载一致,并且403不一致。 有关特定的配置和用法,请参阅:https://nginx.org/en/docs/http/ngxhttpsecurelinkmodule.html。 当然,除此方法外,您还可以使用nginx lua自己实现一些自定义的防水measures措施。 【结尾】
可能您还想看