web资源防盗链

Posted by jintang on 2014-12-11

防盗链工作原理

通过Referer或者签名,网站可以检测目标网页访问的来源网页,如果是资源文件,则可以跟踪到显示它的网页地址,一旦检测到来源不是本站即进行阻止或者返回指定页面。

实现方法

第一种:利用Nginx模块 ngx_http_referer_module

1
2
3
4
5
6
7
8
# nginx配置
location ~ .*\.(gif|jpg|jpeg|png)$ {
valid_referers none blocked test.com *.test.com;
if ($invalid_referer) {
return 403;
# rewrite ^/ http://www.test.com/403.jpg;
}
}

第二种:利用Nginx模块 HttpAccessKeyModule

1
2
3
4
5
6
7
8
9
10
11
# nginx配置
location ~ .*\.(gif|jpg|jpeg|png)$ {
accesskey on;
accesskey_hashmethod md5;
accesskey_arg 'key';
accesskey_signature "mypass$remote_addr";
}

# php输出图片

<img src="http://test.com/1.jpg?key=#signature#" />