1.什么是盗链
我们常见的小站盗用大站的图片、视频等信息资源,来减轻自己服务器的负担的现象成为盗链;因为真实的空间和流量均来自别人的服务器。
2.防盗链
防止别人通过技术手段盗用本站的资源,让其展示本站资源失效,减轻服务器和带宽的压力的称之为防盗链。
3.工作原理
通过referer或者签名,可以检测目标网页访问的来源网页,一旦检测来源不是本站即进行阻止或者返回指定页面(404);eg:经常引用qq空间图片时,显示QQ不允许显示此图(无法显示);
4.防盗链的方法
①Referer:nginx中有个ngx_http_referer_module模块,用于阻止来源非法的域名请求。nginx配置如下:
none:表示Referer来源头部为空的情况;
blocked:表示Referer头部来源不为空,但是里面信息被代理或者防火墙删除了,这些值都不是以http或者https开头;
如果无效referer,可以rewrite到一个自定义的错误页面,如:rewrite ^/ http://www.abc.com/logo.png替换return 403;
②加密签名:使用第三方HttpAccessKeyModule实现nginx防盗链
accesskey off|on 模块开关
accesskey_hashmethod md5 | sha-1 签名加密方式
accesskey_arg GET参数名称
accesskey_signature 加密规则
Nginx中配置如下:
客户端请求本站资源时,必须带上约定好的加密方式。例如:<img src='./logo.png?sign=<?php echo md5('hy'.$_SERVER['REMOTE_ADDR']);?>' />。带上参数sign并且值为sccesskey_signature约定的格式