欧美日产国产成人免费图片,国产精品久久久久av蜜臀,欧美韩国日本一区,在线精品亚洲一区二区不卡

網站盜鏈防護方法詳解【一看就會】

華峰博客 159

簡單有效的防盜鏈手段

場景

如果做過個人站點的同學,可能會遇到別人盜用自己站點資源鏈接的情況,這就是盜鏈。說到盜鏈就要說一個 HTTP 協議的 頭部,referer 頭部。當其他網站通過 URL 引用了你的頁面,用戶在瀏覽器上點擊 URL 時,HTTP 請求的頭部會通過 referer 頭部將該網站當前頁面的 URL 帶上,告訴服務器本次請求是由誰發起的。

例如,在谷歌中搜索 Nginx 然后點擊鏈接:

網站盜鏈防護方法詳解【一看就會】

在打開的新頁面中查看請求頭會發現,請求頭中包含了 referer 頭部且值是 https://www.google.com/。

網站盜鏈防護方法詳解【一看就會】

像谷歌這種我們是允許的,但是有一些其他的網站想要引用我們自己網站的資源時,就需要做一些管控了,不然豈不是誰都可以拿到鏈接。

目的

這里目的其實已經很明確了,就是要拒絕非正常的網站訪問我們站點的資源。

思路

invalid_referer 變量referer 提供了這個變量,可以用來配置哪些 referer 頭部合法,也就是,你允許哪些網站引用你的資源。

referer 模塊

要實現上面的目的,referer 模塊可得算頭一號,一起看下 referer 模塊怎么用的。

默認編譯進 Nginx,通過 --without-http_referer_module 禁用

referer 模塊有三個指令,下面看一下。

Syntax: valid_referers none | blocked | server_names | string ...;Default: —Context: server, locationSyntax: referer_hash_bucket_size size;Default: referer_hash_bucket_size 64;Context: server, locationSyntax:referer_hash_max_sizesize;Default:referer_hash_max_size2048;Context:server,locationvalid_referers 指令,配置是否允許 referer 頭部以及允許哪些 referer 訪問。referer_hash_bucket_size 表示這些配置的值是放在哈希表中的,指定哈希表的大小。referer_hash_max_size 則表示哈希表的最大大小是多大。

這里面最重要的是 valid_referers 指令,需要重點來說明一下。

valid_referers 指令

可以同時攜帶多個參數,表示多個 referer 頭部都生效。

參數值

none允許缺失 referer 頭部的請求訪問block:允許 referer 頭部沒有對應的值的請求訪問。例如可能經過了反向代理或者防火墻server_names:若 referer 中站點域名與 server_name 中本機域名某個匹配,則允許該請求訪問string:表示域名及 URL 的字符串,對域名可在前綴或者后綴中含有 * 通配符,若 referer 頭部的值匹配字符串后,則允許訪問正則表達式:若 referer 頭部的值匹配上了正則,就允許訪問

invalid_referer 變量

允許訪問時變量值為空不允許訪問時變量值為 1

實戰

下面來看一個配置文件。

server{server_namereferer.ziyang.com;listen80;error_loglogs/myerror.logdebug;roothtml;location/{valid_referersnoneblockedserver_names*.ziyang.comwww.ziyang.org.cn/nginx/
~\.google\.;if($invalid_referer) {return403;
}return200valid\n;
}
}

那么對于這個配置文件而言,以下哪些請求會被拒絕呢?

curl -Hreferer: http://www.ziyang.org.cn/ttt referer.ziyang.com/curl -Hreferer: http://www.ziyang.com/ttt referer.ziyang.com/curl -Hreferer: referer.ziyang.com/
curl referer.ziyang.com/
curl -Hreferer: http://www.ziyang.com referer.ziyang.com/curl -Hreferer: http://referer.ziyang.com referer.ziyang.com/curl -Hreferer: http://image.baidu.com/search/detail referer.ziyang.com/curl -Hreferer: http://image.google.com/search/detail referer.ziyang.com/

我們需要先來解析一下這個配置文件。valid_referers 指令配置了哪些值呢?

valid_referersnoneblockedserver_names*.ziyang.comwww.ziyang.org.cn/nginx/
~\.google\.;none:表示沒有 referer 的可以訪問blocked:表示 referer 沒有值的可以訪問server_names:表示本機 server_name 也就是 referer.ziyang.com 可以訪問*.ziyang.com:匹配上了正則的可以訪問www.ziyang.org.cn/nginx/:該頁面發起的請求可以訪問~\.google\.:google 前后都是正則匹配

下面就實際看下響應:

返回 403,沒有匹配到任何規則
? ~ curl -H referer: http://www.ziyang.org.cn/ttt referer.ziyang.com/<html><head><title>403 Forbidden

上一篇:

下一篇:

? 同類閱讀

分享
? ?
? ?
主站蜘蛛池模板: 临洮县| 苍梧县| 皋兰县| 榆树市| 玉树县| 疏附县| 东光县| 吉木萨尔县| 莆田市| 宁都县| 广水市| 巴彦淖尔市| 南安市| 伊宁县| 亚东县| 获嘉县| 长白| 怀集县| 虎林市| 绵竹市| 佳木斯市| 新津县| 浮山县| 安庆市| 长沙市| 平罗县| 积石山| 临洮县| 会东县| 葫芦岛市| 青阳县| 广东省| 边坝县| 广西| 仁怀市| 环江| 禹州市| 明水县| 莫力| 灌阳县| 南投县|