天天看點

Nginx-利用Referer防盜鍊

面的内容包括:

1 Nginx Referer 子產品

2 valid_referers 指令

3 測試Nginx 防盜鍊

1 Nginx Referer子產品

當一個請求頭的Referer字段中包含一些非正确的字段,這個子產品可以禁止這個請求通路站點。

這個頭可以随意的僞造,是以,使用這個子產品并不能100%的阻止這些請求,絕大多數拒絕的請求來自一些典型的浏覽器,可以認為這些典型的浏覽器并不能提供一個”Referer”頭,甚至是那些正确的請求。

文法: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版本以後可以在名稱中使用“*”通配符。

<a href="http://s3.51cto.com/wyfs02/M00/3F/8F/wKioL1PLONHiSJVfAACdLOnl8LA150.jpg" target="_blank"></a>

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 日志格式

<a href="http://s3.51cto.com/wyfs02/M01/3F/8F/wKioL1PLOQOiGRz_AACpIFXxCTo364.jpg" target="_blank"></a>

3.1.3 nginx 日志referer字段

10.0.100.82 - - [24/Aug/2014: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 代碼

<a href="http://s3.51cto.com/wyfs02/M01/3F/8F/wKiom1PLOBHA4wQ4AADifHK8Xms015.jpg" target="_blank"></a>

3.2.2 firefox 浏覽器 URL

URL:http://192.168.57.75/index.html

<a href="http://s3.51cto.com/wyfs02/M02/3F/8F/wKiom1PLODCALE58AAE_647ZlYM109.jpg" target="_blank"></a>

注意:index.html 包含noavatar_small.gif

3.2.3 請求頭資訊原始頭資訊

Accept    image/png,image/*;q=0.8,*/*;q=0.5

Referer    http://192.168.57.75/

3.2.4 nginx 日志referer字段

192.168.4.33 - - [24/Aug/2014: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" -

     本文轉自zys467754239 51CTO部落格,原文連結:http://blog.51cto.com/467754239/1440464,如需轉載請自行聯系原作者