Web 頁面 Meta 的 Referrer Policy

一個圖片酣栈,本站或者外站,都要想辦法拿到

前言介紹

近期在一個項目中志衣,需要引用大量外部網(wǎng)站的圖片屯援,竟意外的發(fā)現(xiàn)在生成環(huán)境中沒有問題猛们,但在本地的開發(fā)環(huán)境下,有部分圖片無法顯示狞洋。于是就開啟了跨域圖片顯示的斗爭中弯淘。

名詞解釋

什么是引用策略(Referrer Policy)?引用策略就是從一個文檔發(fā)出請求時徘铝,是否在請求頭部定義 Referrer 的設(shè)置耳胎。

目前很多網(wǎng)站的防盜鏈機(jī)制都是用頭部定義 Referrer 來判斷是否是盜鏈。其實這個很容易破解惕它,自己在請求時加上 Referrer 頭部就行怕午。

在哪些情況下會設(shè)置引用頭呢?一般來說淹魄,加載一個 HTML 頁面之后郁惜,本 HTML 頁面里的 JavaScript 文件,CSS 文件甲锡,畫面文件都會設(shè)置 Referrer兆蕉。然后,點擊這個 HTML 頁面里的鏈接缤沦,跳轉(zhuǎn)其它畫面時虎韵,也會設(shè)置 Referrer。

Referrer Policy 的值

  1. 空字符串
  2. no-referrer
  3. no-referrer-when-downgrade
  4. same-origin
  5. origin
  6. strict-origin
  7. origin-when-cross-origin
  8. strict-origin-when-cross-origin
  9. unsafe-url

空字符串

默認(rèn)值:一般瀏覽器的默認(rèn)值是 no-referrer-when-downgrade

no-referrer

所有請求不發(fā)送 referrer缸废。

no-referrer-when-downgrade

當(dāng)請求安全級別下降時不發(fā)送 referrer包蓝。目前,只有一種情況會發(fā)生安全級別下降企量,即從 HTTPS 到 HTTP测萎。HTTPS 到 HTTP 的資源引用和鏈接跳轉(zhuǎn)都不會發(fā)送 referrer。

same-origin

對于同源的鏈接和引用届巩,會發(fā)送referrer硅瞧,其他的不會。

同源的意思是指同一個域名且同一協(xié)議恕汇。

如果設(shè)置成 same-origin腕唧,那么 aaa.com 引用 bbb.com 的資源,不會發(fā)送 referrer瘾英。子域名也不是同一個域名枣接,aaa.com 引用 test.aaa.com 的資源,不會發(fā)送 referrer方咆。

origin

會發(fā)送 referrer月腋,但只會發(fā)送源信息蟀架。源信息包括訪問協(xié)議和域名瓣赂。

strict-origin

這個相當(dāng)于 origin 和 no-referrer-when-downgrade 的 AND 合體榆骚。即在安全級別下降時不發(fā)送 referrer;安全級別未下降時發(fā)送源信息煌集。

注意:這個是新加的標(biāo)準(zhǔn)妓肢,有些瀏覽器可能還不支持。

origin-when-cross-origin

這個相當(dāng)于 origin 和 same-origin 的 OR 合體苫纤。同源的鏈接和引用碉钠,會發(fā)送完全的 referrer 信息;但非同源鏈接和引用時卷拘,只發(fā)送源信息喊废。

strict-origin-when-cross-origin

這個比較復(fù)雜,同源的鏈接和引用栗弟,會發(fā)送 referrer污筷。安全級別下降時不發(fā)送 referrer。其它情況下發(fā)送源信息乍赫。

注意:這個是新加的標(biāo)準(zhǔn)瓣蛀,有些瀏覽器可能還不支持。

unsafe-url

無論是否發(fā)生協(xié)議降級雷厂,無論是本站鏈接還是站外鏈接惋增,統(tǒng)統(tǒng)都發(fā)送 Referrer 信息。正如其名改鲫,這是最寬松而最不安全的策略诈皿。

Referrer Policy 的設(shè)置方法

我們可以用以下方法來設(shè)置引用策略(Referrer Policy)。

  • 通過 http 響應(yīng)頭中的 Referrer-Policy 字段
  • 通過 meta 標(biāo)簽钩杰,name 為 referrer
  • 通過<a>纫塌、<area><img>讲弄、<iframe>措左、<link>元素的 referrerpolicy 屬性。
  • 通過<a>避除、<area>怎披、<link>元素的 rel=noreferrer 屬性。

通過 http 響應(yīng)頭中的 Referrer-Policy 字段

Content-Security-Policy: referrer no-referrer|no-referrer-when-downgrade|origin|origin-when-cross-origin|unsafe-url;

Apache 下瓶摆,設(shè)置方法如下:

<IfModule mod_headers.c>
  Header set Content-Security-Policy: "referrer=no-referrer"
</IfModule>

通過 meta 標(biāo)簽凉逛,name 為 referrer

<meta name="referrer" content="no-referrer|no-referrer-when-downgrade|origin|origin-when-crossorigin|unsafe-url">

通過標(biāo)簽的 referrer 屬性

<a  referrer="no-referrer|origin|unsafe-url">xxx</a>

Referrer 策略還有其他歷史遺留的值

Referrer 策略還有其他歷史遺留的值,不過不建議使用群井。

  • never 等價于 no-referrer
  • default 等價于 no-referrer-when-downgrade
  • always 等價于 unsafe-url

小結(jié)

所以在我當(dāng)前的項目中使用same-origin是最好的選擇了状飞,在其他情況下就根據(jù)實際應(yīng)用場景來進(jìn)行選擇即可


附上個人博客傳送門:https://blog.paddings.cn/2018/07/17/html/Meta-Referrer-Policy/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子诬辈,更是在濱河造成了極大的恐慌酵使,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,378評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件焙糟,死亡現(xiàn)場離奇詭異口渔,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)穿撮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評論 3 399
  • 文/潘曉璐 我一進(jìn)店門缺脉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人悦穿,你說我怎么就攤上這事攻礼。” “怎么了栗柒?”我有些...
    開封第一講書人閱讀 168,983評論 0 362
  • 文/不壞的土叔 我叫張陵秘蛔,是天一觀的道長。 經(jīng)常有香客問我傍衡,道長深员,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,938評論 1 299
  • 正文 為了忘掉前任蛙埂,我火速辦了婚禮倦畅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘绣的。我一直安慰自己叠赐,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,955評論 6 398
  • 文/花漫 我一把揭開白布屡江。 她就那樣靜靜地躺著芭概,像睡著了一般。 火紅的嫁衣襯著肌膚如雪惩嘉。 梳的紋絲不亂的頭發(fā)上罢洲,一...
    開封第一講書人閱讀 52,549評論 1 312
  • 那天,我揣著相機(jī)與錄音文黎,去河邊找鬼惹苗。 笑死,一個胖子當(dāng)著我的面吹牛耸峭,可吹牛的內(nèi)容都是我干的桩蓉。 我是一名探鬼主播,決...
    沈念sama閱讀 41,063評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼劳闹,長吁一口氣:“原來是場噩夢啊……” “哼院究!你這毒婦竟也來了洽瞬?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,991評論 0 277
  • 序言:老撾萬榮一對情侶失蹤业汰,失蹤者是張志新(化名)和其女友劉穎片任,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蔬胯,經(jīng)...
    沈念sama閱讀 46,522評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,604評論 3 342
  • 正文 我和宋清朗相戀三年位他,在試婚紗的時候發(fā)現(xiàn)自己被綠了氛濒。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,742評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡鹅髓,死狀恐怖舞竿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情窿冯,我是刑警寧澤骗奖,帶...
    沈念sama閱讀 36,413評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站醒串,受9級特大地震影響执桌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜芜赌,卻給世界環(huán)境...
    茶點故事閱讀 42,094評論 3 335
  • 文/蒙蒙 一仰挣、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧缠沈,春花似錦膘壶、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至柬赐,卻和暖如春亡问,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背肛宋。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評論 1 274
  • 我被黑心中介騙來泰國打工玛界, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人悼吱。 一個月前我還...
    沈念sama閱讀 49,159評論 3 378
  • 正文 我出身青樓堂飞,卻偏偏與公主長得像,于是被迫代替她去往敵國和親张足。 傳聞我的和親對象是個殘疾皇子蛙讥,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,747評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 當(dāng)用戶在瀏覽器上點擊一個鏈接時,會產(chǎn)生一個 HTTP 請求,用于獲取新的頁面內(nèi)容馅精,而在該請求的報頭中严嗜,會包含一個 ...
    xnotepad閱讀 3,797評論 0 3
  • 摘要 目前有許多的惡意攻擊都是以網(wǎng)站及其用戶作為目標(biāo)漫玄,本文將簡要介紹在 Web 服務(wù)器一側(cè)的安全加固和測試方法。 ...
    RiboseYim閱讀 1,536評論 0 4
  • 雖然之前我有整理過一次meta 標(biāo)簽压彭,但是心中對于meta 標(biāo)簽還是一知半解睦优,所以再次對meta 標(biāo)簽進(jìn)行整理,并...
    微風(fēng)玉米閱讀 1,166評論 0 0
  • 每次都很努力以一副很嚴(yán)肅的樣子走進(jìn)教室壮不,盡力抑制內(nèi)心所有的波瀾汗盘。因為我要面對的是八十多個孩子,由于外表生的很不占優(yōu)...
    宓美人閱讀 632評論 6 7
  • 在家中做飯询一,偶然聽到一期電臺節(jié)目《誰的婚姻不委屈》隐孽。突然間,仿佛醍醐灌頂健蕊,茅塞頓開菱阵。 在這之前,我和言爸已經(jīng)冷戰(zhàn)了...
    阿犟閱讀 440評論 2 3