Web资源防盗链
什么是防盗链 ?
首先 我们先了解什么是盗链
盗链概念
盗链是指在自己的页面展示一些不属于自己服务器上的内容
获取他人服务器的资源地址,绕过他人的资源展示页面,直接在自己的页面向用户展示此内容
常见为小站盗取大站的图片,音乐,视频,软件等资源;
通过盗链的方法,可以减轻自己服务器的负担,因为真实的空间和流量都是来自资源原有服务器
以上是一种不道德行为,不建议大家使用
防盗链概念
防止别人通过技术手段绕过本站的资源展示页面,盗用本站的资源,让绕开本站资源展示页面的资源链接失效
可以大大减轻服务器及带宽的压力
防盗链的工作原理
通过Referer或者签名,网站可以检测目标网页访问的来访网页,如果是资源文件,则可以跟踪显示它的网页地址
一旦检测到来源不是本站即进行阻止或者返回指定的页面
通过计算签名的方式,判断请求是否合法,如果合法显示,否者返回错误信息;
防盗链的实现方法
-
Referer
Nginx 模块 ngx_http_referer_module 用于阻挡来源非法的域名请求Nginx指令 valid referers,全局变量$invalid_veferer
none是指referer是否为空 ,如果写了空,那么referer为空时也是合法的;
blocked是防火墙或代理等对referer的一个删除
server_names "Referer"来源头部包含当前的server_names 信任的地址,
正则匹配结尾若是gif|jpg…开始防盗链处理,判断源是否合法,若是非法,则返回403
传统防盗链遇到的问题
伪造Referer
- 可以使用加密签名解决
使用第三方模块HttpAccessKeyModule实现防盗链
accessKey on|off 模块开关
accesskey_hasshmethod MD5|sha-1签名加密方式
accesskey_arg GET参数名称
accesskey_signature 加密规则
两边进行约定暗号,虽然麻烦,但是安全,空间时间安全性,总是这样,利弊权益,自行判断.