referrer防盜鏈
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
使用referer
那么,referer到底有啥作用呢? 交互優(yōu)化在某些web應(yīng)用的交互中,右上角會(huì)提供一個(gè)返回按鈕,方便用戶返回上一頁 其實(shí)現(xiàn)一般也比較簡(jiǎn)單
這種處理方式隱藏的一個(gè)問題是:如果用戶從其他入口如分享鏈接等地方直接進(jìn)來時(shí),點(diǎn)擊這個(gè)按鈕是無法返回。 因此在點(diǎn)擊按鈕時(shí),我們可以判斷 應(yīng)該注意到上面寫的是 防盜鏈當(dāng)用戶訪問網(wǎng)頁時(shí),referer就是前一個(gè)網(wǎng)頁的URL;如果是圖片的話,通常指的就是圖片所在的網(wǎng)頁。當(dāng)瀏覽器向服務(wù)器發(fā)送請(qǐng)求時(shí),referer就自動(dòng)攜帶在HTTP請(qǐng)求頭了。 一個(gè)HTML頁面往往包含多種資源,這些資源通過標(biāo)簽如 下面是關(guān)于盜鏈的百度百科定義
打個(gè)比方:A網(wǎng)站將自己的靜態(tài)資源如圖片或視頻等存放在服務(wù)器上。B網(wǎng)站在未經(jīng)A允許的情況下,使用A網(wǎng)站的圖片或視頻資源,放置到自己的網(wǎng)站中。由于服務(wù)器資源是需要花錢的,這樣網(wǎng)站B盜取了網(wǎng)站A的空間和流量,而A沒有獲取任何利益卻承擔(dān)了資源使用費(fèi)。B盜用A資源放到自己網(wǎng)站的行為即為盜鏈。 防盜鏈一般由下面幾種方式
這里我們主要關(guān)注一下referer的防盜鏈的原理。下面是nginx的防盜鏈配置
這種方法是在server或者location段中加入: 該指令支持
通過referer,我們可以判斷請(qǐng)求的來源,從而決定服務(wù)器是否正常返回請(qǐng)求資源,達(dá)到控制請(qǐng)求的目的。 需要注意的是,在某些情況下,即使用戶是正常訪問網(wǎng)頁或圖片,也是不會(huì)攜帶referer的,比如直接在瀏覽器地址欄直接輸入資源URL,或通過瀏覽器新窗口打開頁面等。這種訪問是正常的,如果強(qiáng)制現(xiàn)在某些白名單referer名單才能訪問資源,則可能誤傷這一部分正常用戶,這也是為什么有的防盜鏈檢測(cè)中允許Referer頭部為空通過檢測(cè)的情況。 既然如此,如果把referer隱藏掉,也可以繞開部分站點(diǎn)防盜鏈的限制,下面讓我們來看看如何實(shí)現(xiàn)隱藏referer的功能。 隱藏referer參考 在利用部分站點(diǎn)防盜鏈限制允許referer為空,或者我們僅僅是不想讓服務(wù)器知道訪問來源時(shí),我們可以隱藏referer。 referrerPolicy之前瀏覽器在請(qǐng)求資源時(shí),會(huì)按自己的默認(rèn)規(guī)則來決定是否加上Referrer。后來W3C發(fā)布了
上面只列舉了一部分可選策略,詳情可參考 因此,我們可以手動(dòng)指定
或者在創(chuàng)建image對(duì)象的時(shí)候,指定
此時(shí)打開開發(fā)者工具就可以看見該圖片的請(qǐng)求已經(jīng)不再攜帶對(duì)應(yīng)的referer了。總結(jié)一下,一般有下面幾種設(shè)置Referer策略的方式:
需要注意的是目前
該文章在 2024/4/23 16:25:22 編輯過 |
相關(guān)文章
正在查詢... |