nginx防盜鏈處理模塊referer和secure_link模塊

使用場景:某網站聽過URI引用你的頁面;當用戶在網站點擊url時;http頭部會經過referer頭部,將該網站當前頁面的url帶上,告訴服務本次請求是由這個頁面發起的html

思路:經過referer模塊,用invalid_referer變量根據配置判斷referer頭部是否合法。python

目的:拒絕非正常網站訪問咱們站點資源nginx

默認:referer模塊默認編譯進nginx正則表達式

指令介紹算法

Syntax: valid_referers none | blocked | server_names | string ...; #指定的域名地址 
Default: —
Context: server, location
Syntax: referer_hash_bucket_size size;  #希到內存裏。內存的大寫
Default: referer_hash_bucket_size 64; 
Context: server, location
Syntax: referer_hash_max_size size;
Default: referer_hash_max_size 2048; 
Context: server, location

valid_referers:參數express

none:容許缺失的頭部訪問
block:容許referer沒有對應值的請求
server_names:若referer站點域名與server_name中本機配的域名同樣容許訪問
表示域名及URI的字符串,對域名可在前綴或者後綴中含有*通配符:若頭部值匹配字符串後則容許訪問
正則表達式:若referer頭部值匹配正則表達式後,容許訪問
invalid_referer變量
容許訪問時變量值爲空
不容許訪問時變量值爲1
配置
server {
	server_name refere.com; 
	access_log  logs/refere.log  main;
	location /{
		valid_referers none blocked server_name
		*.taohui.pub www.taohui.org.cn/nginx/
		~\.google\.;
		if ($invalid_referer) {
		return 403;
		}
		return 200 "tars\n";
	}
}

  測試安全

[root@python vhast]# curl -H 'referer: http://refere.com.cn/ttt' refere.com
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.15.9</center>
</body>
</html>
[root@python vhast]# curl -H 'referer:  http://www.taohui.pub/ttt' refere.com
tars
[root@python vhast]# curl -H 'referer: ' refere.com
tars
[root@python vhast]# curl -H '' refere.com
tars
[root@python vhast]# curl -H 'referer: http://www.taohui.tech' refere.com
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.15.9</center>
</body>
</html>
[root@python vhast]# curl -H 'referer: http://referer.taohui.tech' refere.com
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.15.9</center>
</body>
</html>
[root@python vhast]# curl -H 'referer: http://image.baidu.com/search/detail' refere.com
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.15.9</center>
</body>
</html>
[root@python vhast]# curl -H 'referer: http://image.google.com/search/detail' refere.com
tars

  

secure_link 模塊介紹;默認未編譯進去
經過驗證URL中哈希值的方式防盜鏈
過程:由某服務器(也能夠是nginx)生成加密後的安全rul,返回給客戶端;客戶端使用安全的uri訪問,有nginx的secure_link變量是否經過
原理:哈希算法在技術上實現幾乎是不可逆的;客戶端只能拿到執行過哈希算法的uri;僅生產url的服務器、驗證url是否安全的nginx這兩者,才保存執行哈希算法錢的原始字符串;原始字符串一般由下列部分組成
1資源位置,如HTTP中指定資源的url,防止攻擊者拿到一個安全url後能夠任意訪問資源
2用戶信息,如用戶的IP地址,限制其餘用戶盜用安全URL
3時間戳,使安全URL及時過時
4密鑰,僅服務端有,增長攻擊者猜想出原始字符串難度
變量:secure_link  、secure_link_expires
secure_link 指令介紹
 
Syntax: secure_link expression;   #值爲空,不經過 爲0 爲過時 爲1 經過
Default: —
Context: http, server, location
Syntax: secure_link_md5 expression; #怎麼構造原始字符串
Default: —
Context: http, server, location
Syntax: secure_link_secret word;
Default: —
Context: location
 
相關文章
相關標籤/搜索