D12-Nginx-利用Referer防盗链

简介:

D12-Nginx-利用Referer防盗链
 

下面的内容包括:
1 Nginx Referer 模块
2 valid_referers 指令
测试Nginx 防盗链


1 Nginx Referer模块
当一个请求头Referer字段中包含一些非正确的字段,这个模块可以禁止这个请求访问站点
这个头可以随意的伪造,因此,使用这个模块并不能100%的阻止这些请求,绝大多数拒绝的请求来自一些典型的浏览器,可以认为这些典型的浏览器并不能提供一个”Referer”头,甚至是那些正确的请求。


2 valid_referers 指令
语法:valid_referers [none|blocked|server_names] 
默认值:no
使用字段:server, location
这个指令在referer头的基础上为 $invalid_referer 变量赋值,其值为0或1
可以使用这个指令来实现防盗链功能,如果valid_referers列表中没有Referer头的值, $invalid_referer将被设置为1
参数可以使如下形式:
none 意为不存在的Referer头(表示空的,也就是直接访问,比如直接在浏览器打开一个图片)
blocked
 意为根据防火墙伪装Referer头,如:“Referer: XXXXXXX”。
server_names 为一个或多个服务器的列表,0.5.33版本以后可以在名称中使用“*”通配符

例如:

 
  1. location /photos/ { 
  2.   valid_referers none blocked www.mydomain.com *.mydomain.com
  3.   
  4.   if ($invalid_referer) { 
  5.     return   403; 
  6.   } 



3 测试
3.1 正常的Referer
firefox 浏览器(get)http://bbs.test.com/uc_server/images/noavatar_small.gif

3.1.1 请求头信息原始头信息
Accept    text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding    gzip, deflate
Accept-Language    zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Connection    keep-alive
Host    bbs.test.com
User-Agent    Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:14.0) Gecko/20100101 Firefox/14.0.1

3.1.2 nginx 日志格式

 
  1. log_format  access  '$remote_addr - $remote_user [$time_local] "$request" ' 
  2.                     '$status $body_bytes_sent "$http_referer" ' 
  3.                     '"$http_user_agent" $http_x_forwarded_for'; 


3.1.3 nginx 日志referer字段

10.0.100.82 - - [24/Aug/2012:10:50:00 +0800] "GET / HTTP/1.1" 200 6166 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:14.0) Gecko/20100101 Firefox/14.0.1" 192.168.4.33  #注意:"-" 表示referer空白,这里直接在浏览器打开一个图片


3.2. 使用Referer防盗链
3.2.1 nginx 代码

 
  1. location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ 
  2. {   
  3.    valid_referers none blocked test.com *.test.com
  4.    if ($invalid_referer
  5.    {   
  6.       #rewrite ^/ http://$host/logo.png; 
  7.       return 403
  8.    }   
  9.    expires      300d;## 


3.2.2 firefox 浏览器 URL
URL:http://192.168.57.75/index.html

 
  1. cat /usr/local/nginx/html/index.html
  2. <html> 
  3. <head> 
  4. <title>Welcome to nginx!</title> 
  5. </head> 
  6. <body bgcolor="white" text="black"> 
  7. <center><h1>Welcome to nginx!</h1></center> 
  8. <img border="0" style="max-width:400px" alt="" src="http://bbs.test.com/uc_server/images/noavatar_small.gif"> 
  9. </body> 
  10. </html> 

注意:index.html 包含noavatar_small.gif

3.2.3 请求头信息原始头信息
Accept    image/png,image/*;q=0.8,*/*;q=0.5
Accept-Encoding    gzip, deflate
Accept-Language    zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Connection    keep-alive
Host    bbs.test.com
Referer    http://192.168.57.75/
User-Agent    Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:14.0) Gecko/20100101 Firefox/14.0.1

3.2.4 nginx 日志referer字段
192.168.4.33 - - [24/Aug/2012:10:55:05 +0800] "GET /uc_server/images/noavatar_small.gif HTTP/1.1" 403 162 "http://192.168.57.75/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:14.0) Gecko/20100101 Firefox/14.0.1" -
注意:返回403 状态码



参考



结束
更多请:
linux 相关 37275208
vmware 虚拟化相关  166682360


本文转自 dongnan 51CTO博客,原文链接:http://blog.51cto.com/dngood/1033362

相关文章
|
应用服务中间件 nginx
nginx防盗链功能
nginx防盗链功能
|
7月前
|
缓存 应用服务中间件 网络安全
nginx 重写功能,防盗链功能 介绍
nginx 重写功能,防盗链功能 介绍
|
7月前
|
应用服务中间件 nginx
Nginx的referer参数的用法和原理
总结:referer参数可以用于Nginx配置,以限制或允许特定来源网站的访问,提高安全性或控制流量。它通过valid_referers指令来定义合法的Referer来源,并根据配置对请求进行处理。但需要注意,Referer字段内容可以被伪造,因此不应作为唯一的安全措施。
876 0
|
缓存 负载均衡 应用服务中间件
Nginx 的优化思路,并解析网站防盗链
Nginx 的优化思路,并解析网站防盗链
264 1
|
应用服务中间件 Shell nginx
Nginx + keepalived 实现高可用 + 防盗链 + 动静分离(二)
Nginx + keepalived 实现高可用 + 防盗链 + 动静分离
|
负载均衡 NoSQL 应用服务中间件
Nginx + keepalived 实现高可用 + 防盗链 + 动静分离(一)
Nginx + keepalived 实现高可用 + 防盗链 + 动静分离
101 0
|
缓存 应用服务中间件 Linux
百度搜索:蓝易云【Linux系统Nginx优化与防盗链详细教程】
这些是关于Nginx优化和防盗链的基本教程。根据实际需求和具体情况,您可能需要进行更多的配置和调整。在修改Nginx配置文件之前,请确保您对配置语法和操作有一定的了解,并备份原始配置文件以防意外情况发生。
216 1
|
监控 应用服务中间件 Linux
Nginx之防盗链及高可用解读
Nginx之防盗链及高可用解读
|
应用服务中间件 nginx
Nginx防盗链配置
Nginx防盗链配置
|
应用服务中间件 开发工具 nginx
nginx防盗链
nginx防盗链简单配置