## 盜鏈
盜鏈是指服務提供商自己不提供內容,而是通過技術手段,直接在自己的網站上向最終用戶提供其他服務提供商的內容,騙取用戶的點擊和瀏覽。
## 盜鏈分類
### 常規盜鏈
在自己的網站嵌入別人網站的鏈接;
### 分布式盜鏈
服務提供商通過Spider在網絡中抓取有用的鏈接,存在自己的數據庫中;對于最終用戶的訪問都轉化為數據庫的查詢,被查到的URL就是被盜鏈的對象。
## [referer模塊][1]
這個模塊可以根據referer實現防盜鏈,但是referer偽造可以也十分簡單,所以這樣只能防住一部分人。
### 指令
>[success]valid_referers [none | blocked | server_names]
默認值:no
上下文:server location
功能:如果`referer`頭沒有出現在`valid_referers`中,則進行相應的限制。
none:refer頭缺席被認為是有效的;
blocked:由防火墻偽裝的`referer`被認為有效;如`Referer.XXXXXX`
server_names:被指定的名字被認為是有效的;
>[success]referer_hash_max_size size;
默認值:referer_hash_max_size 2048;
上下文:server, location
功能:合法的referer 哈希表最大值
>[success]referer_hash_bucket_size size;
默認值:referer_hash_bucket_size 64;
上下文:server, location
功能:合法的referer哈希桶大小
### 配置示例
~~~
location ~* \.(gif|jgp|png|bmp|flv|mp4|mp3){
referer_hash_bucket_size 64;
referer_hash_max_size 2048;
valid_referers none blocked server_names
*.example.com www.example.org/galleries/
~\.google\.;
if ($invalid_referer) {
return 403;
}
}
~~~
## [secure_link][2]
用于所需安全性令牌計算和檢查請求的URL
默認沒有支持,編譯時,需要指定`--with-http_secure_link_module`
### 指令
>[danger]secure_link_secret expression;
>[success]默認值:-
上下文:location
功能:指定一個密碼,用于md5哈希生成校驗請求;完整的連接格式`/prefix/md5/reference`
#### 配置示例
www目錄下有secure/i.html
~~~
location /secure/ {
root /www/;
secure_link_secret hi;
if ($secure_link = "") {
return 403;
}
rewrite ^ /secure/$secure_link break;
}
~~~
~~~
echo -n 'i.htmlhi' | openssl md5 -hex
(stdin)= d926b3c76b6a694b48a0309df37b630f
# 根據 secret生成訪問路徑
curl 192.168.101.191/secure/d926b3c76b6a694b48a0309df37b630f/i.html
~~~
### 指令
>[danger]secure_link
>[success]默認值:none
上下文:location
功能:指定md5值,過期時間,如果不指定則不過期;
>[danger]secure_link_md5
>[success]默認值:none
上下文:location
功能:指定一個被md5哈希計算的字符串;如果計算所得的哈希值與secure_link給定的md5進行比較,如果相等則$secure_link=1,否則將會是空字符串。
#### 配置示例
~~~
location /s/ {
secure_link $arg_md5,$arg_expires;
secure_link_md5 "$secure_link_expires$uri$remote_addr";
if ($secure_link = "") {
return 403;
}
if ($secure_link = "0") {
return 410;
}
rewrite ^/s/(.*)$ /s/$1 break;
}
~~~
根據secure_link_md5格式組織md5
~~~
echo -n '2147483646/s/i.html192.168.101.191' | openssl md5 -binary | openssl base64 | tr +/ -_ | tr -d =
192.168.101.191/s/i.html?md5=msq1oa71Nb0ns2lzP37Zcw\&expires=2147483646
~~~
[1]:http://nginx.org/en/docs/http/ngx_http_referer_module.html
[2]:http://nginx.org/en/docs/http/ngx_http_secure_link_module.html
- nginx的功能
- nginx常用變量
- Nginx內核模塊
- Nginx的事件模塊
- Nginx的HTTP模塊
- Nginx的fastcgi
- nginx的proxy
- Upstream實現后臺服務器集群
- 文件操作優化相關的配置
- Nginx模塊管理和進程管理
- 模塊管理
- 進程管理
- 針對Nginx的Linux系統優化
- Nginx如何處理一個請求
- nginx狀態信息
- Nginx工具
- Nginx限制流量
- Nginx限制用戶的并發連接數
- 配置FLV服務器
- Nginx訪問控制
- Nginx自動索引
- Nginx網頁壓縮傳輸
- 控制Nginx如何記錄日志
- Nginx改寫響應
- Nginx重寫
- 后臺Nginx記錄原始原始IP
- Nginx防盜鏈
- Nginx的https