关闭

nginx 实现valid_referer全面解析

1732人阅读 评论(0) 收藏 举报
分类:

先来补充点知识,然后在进行讲解。

先看下两种HTTP head 一个是直接输入网址打开的head,另一个是通过搜索引擎打开的网址head

一:直接输入网址打开的

(Request-Line)  GET / HTTP/1.1 
Host    hcoberlinol.com 
User-Agent  Mozilla/5.0 (Windows NT 5.1; rv:18.0) Gecko/20100101 Firefox/18.0 
Accept  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Language zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3 
Accept-Encoding gzip, deflate 

二:通过搜索引擎打开的

(Request-Line)  GET / HTTP/1.1 
Host    hcoberlinol.com 
User-Agent  Mozilla/5.0 (Windows NT 5.1; rv:18.0) Gecko/20100101 Firefox/18.0 
Accept  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Language zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3 
Accept-Encoding gzip, deflate 
Referer http://www.Google.com.hk/search?hl=zh-CN&newwindow=1&safe=strict&site=&source=hp&q=site%3Ahcoberlinol.com&btnK=Google+%E6%90%9C%E7%B4%A2 
Connection  keep-alive 
If-Modified-Since   Tue, 22 Jan 2013 07:18:31 GMT 
Cache-Control   max-age=0 

可以看出两者的主要区别在于referer,

了解了背景知识后我们来解决问题

现公司要求实现通过搜索引擎打开这个网址的化进行跳转到别的网址

直接输入网址打开的就打开这个网址

valid_referers 指令详解

该指令后面可以接 none blocked serevr_names string或者是正则表达式

none 代表没有referer

blocked 代表有referer但是被防火墙或者是代理给去除了

string或者正在表达式 用来匹配referer

nginx会通过查看referer字段和valid_referers后面的referer列表进行匹配,如果匹配到了就invalid_referer字段值为0 否则设置该值为1

现我为公司写出了实现这一功能的代码

valid_referers none blocked server_names; 
if ($invalid_referer) { 
 rewrite ^/ http://********.com/ redirect; 
} 

这里我讲解下

1.首先当我输入我要打开的网址的时候,因为是直接输入的没有referer所以匹配了

valid_referers后面的none或者是blocked 所以invalid_referer值为0 所以不进行跳转.

当我是从这个网站里面的链接跳到该网站首页的时候 因为referer的值是肯定包含srever_names 所以匹配了server_names所以不进行跳转.

 

2.当我从搜素引擎进去的时候因为referer字段类似于www.google.com.hk/search

开始进行匹配 发现没有一个匹配,则此时会设置invalid_referer值为1 if语句成功执行,进行了跳转. 达到功能

 

以上理解 仅为个人理解不知道对于否,有什么不对的地方 多多指教。我虚心接受


原文地址:http://www.07net01.com/linux/nginx_shixianvalid_refererquanmianjiexi_69766_1361327914.html

0
0
查看评论

nginx referer限制

nginx referer限制正确的使用姿势.
  • aca_jingru
  • aca_jingru
  • 2016-02-14 17:09
  • 5482

Nginx 安全加固心得

在此转载一篇关于Nginx安全加固的文章,本人没有这方面的经验,就参阅了别人的文章,对于Nginx安全加固可以有效提高Web应用的安全性能,博文地址:http://purplegrape.blog.51cto.com/1330104/1651656/ nginx发展多年,自身的安全漏洞比较...
  • JY_He
  • JY_He
  • 2016-08-24 14:05
  • 5838

nginx屏蔽特定http_referer的请求

在nginx.conf的server配置项中加入 if ($http_referer ~* "www.xxx.com") { return 403; }
  • zyf_balance
  • zyf_balance
  • 2017-08-29 16:28
  • 1212

nginx反向代理访问带referer的后端

防外链大都是通过检查请求中的http referer来实现的。如果通过反向代理来动态指定http referer是不是可以解决问题。 用nginx搭一个反向代理 location /get/ { set $hostx “”; set $addrs “”; if ( $uri ~ “^/get/h...
  • esonbest1234
  • esonbest1234
  • 2016-02-24 11:15
  • 1842

伪造HTTP-REFERER方法及防止伪造REFERER

HTTP-REFERER这个变量已经越来越不可靠了,完全就是可以伪造出来的东东。以下是伪造方法:ASP/Visual Basic代码PHP(前提是装了curl): 以下是代码片段:dim http     set ...
  • ycyangcai
  • ycyangcai
  • 2008-02-07 18:58
  • 8337

nginx location正则写法

一个示例: location = / { # 精确匹配 / ,主机名后面不能带任何字符串 [ configuration A ] } location / { # 因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求 # 但是正则和最长字符串会优先匹配 [ con...
  • wxl1986622
  • wxl1986622
  • 2016-08-02 11:07
  • 6594

nginx 实现valid_referer全面解析

先来补充点知识,然后在进行讲解。 先看下两种HTTP head 一个是直接输入网址打开的head,另一个是通过搜索引擎打开的网址head 一:直接输入网址打开的 (Request-Line)  GET / HTTP/1.1 Host &...
  • ywb201314
  • ywb201314
  • 2016-05-20 13:41
  • 1732

Nginx ngx_http_referer_module模块根据referer屏蔽或禁止访问

ngx_http_referer_module模块可根据header中的referer信息屏蔽某些请求对网站或应用的访问,可以起到禁止直接访问网站static files的作用(防盗链或保护文件)。 尽管nginx官方反复强调伪造一个referer并非难事,但还是提高了技术门槛,可以限制多数普通用...
  • Solmyr_biti
  • Solmyr_biti
  • 2017-10-02 16:21
  • 661

[WCF全面解析(上下册)].蒋金楠.扫描版.pdf

[WCF全面解析(上册)].蒋金楠.扫描版.pdf http://pan.baidu.com/share/link?uk=2400149290&shareid=1302807510 [WCF全面解析(下册)].蒋金楠.扫描版.pdf http://pan.baidu.com/s...
  • m372897500
  • m372897500
  • 2013-09-02 10:09
  • 4018

开始接触Openlayers

偶然的机会,开始研究。CCNA基本暂告一段落。软设继续教育培训的课程抽空选一门课上。
  • lerill
  • lerill
  • 2011-06-16 13:11
  • 82
    个人资料
    • 访问:386000次
    • 积分:5292
    • 等级:
    • 排名:第6156名
    • 原创:42篇
    • 转载:723篇
    • 译文:0篇
    • 评论:14条
    最新评论