欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

HTTP Referer詳解及Referer控制

 更新時間:2018年04月09日 15:29:21   投稿:wdc  
HTTP Referer是header的一部分,當(dāng)瀏覽器向web服務(wù)器發(fā)送請求的時候,一般會帶上Referer,告訴服務(wù)器我是從哪個頁面鏈接過來的

什么是HTTP Referer

referer的意思簡言之,HTTP Referer是header的一部分,當(dāng)瀏覽器向web服務(wù)器發(fā)送請求的時候,一般會帶上Referer,告訴服務(wù)器我是從哪個頁面鏈接過來的,服務(wù)器籍此可以獲得一些信息用于處理。

比如在一個網(wǎng)頁里面插入一個超鏈接,鏈接到其他的網(wǎng)頁,那么當(dāng)點擊這個超鏈接從而鏈接到另外一個頁面的時候,相當(dāng)于瀏覽器向 web 服務(wù)器發(fā)送了一個 http 請求,對于另外一個頁面而言,這個 referer 就是上一個頁面的 URL,而對于從地址欄里面直接輸入 URL 或者是刷新網(wǎng)頁的方式,則 referer = null,通過設(shè)置這個 referer 可以防止盜鏈的問題

例如從我主頁上鏈接到一個朋友那里,他的服務(wù)器就能夠從HTTP Referer中統(tǒng)計出每天有多少用戶點擊我主頁上的鏈接訪問他的網(wǎng)站。

Referer其實應(yīng)該是英文單詞Referrer,不過拼錯的人太多了,所以編寫標(biāo)準(zhǔn)的人也就將錯就錯了。

Referer有時也被用作防盜鏈

即下載時判斷來源地址是不是在網(wǎng)站域名之內(nèi), 否則就不能下載或顯示,很多網(wǎng)站,如天涯就是通過Referer頁面來判斷用戶是否能夠下載圖片.

當(dāng)然,對于某些惡意用戶,也可能偽造Referer來獲得某些權(quán)限,在設(shè)計網(wǎng)站時要考慮到這個問題.

還可用做電子商務(wù)網(wǎng)站的安全,在提交信用卡等重要信息的頁面用referer來判斷上一頁是不是自己的網(wǎng)站,如果不是,可能是黑客用自己寫的一個表單,來提交,為了能跳過你上一頁里的javascript的驗證等目的。

但是注意不要把Rerferer用在身份驗證或者其他非常重要的檢查上,因為Rerferer非常容易在客戶端被改變

雖然Referer并不可靠,但用來防止圖片盜鏈還是足夠的,畢竟不是每個人都會修改客戶端的配置。實現(xiàn)一般都是通過apache的配置文件,首先設(shè)置允許訪問的地址:

# 只允許來自domain.com的訪問,圖片可能就放置在domain.com網(wǎng)站的頁面上
SetEnvIfNoCase Referer “^http://www.domain.com/” local_ref
# 直接通過地址訪問
SetEnvIf Referer “^$” local_ref

然后再規(guī)定被標(biāo)記了的訪問才被允許:

<FilesMatch “.(gif|jpg)”>
Order Allow,Deny
Allow from env=local_ref
</FilesMatch>

或者

<Directory /web/images>
Order Deny,Allow
Deny from all
Allow from env=local_ref
</Directory>

哪些情況下無法獲得上一頁referrer信息

直接在瀏覽器地址欄中輸入地址;

使用location.reload()刷新(location.href或者location.replace()刷新有信息);

在微信對話框中,點擊鏈接進(jìn)入微信自身的瀏覽器;

掃碼進(jìn)入QQ或者微信的瀏覽器;

直接新窗口打開一個頁面; 2017.8.3更新 新版本Chrome測試,新窗口頁面依然有document.referrer

從https的網(wǎng)站直接進(jìn)入一個http協(xié)議的網(wǎng)站(Chrome下親測);

a標(biāo)簽設(shè)置rel="noreferrer"(兼容IE7+);

meta標(biāo)簽來控制不讓瀏覽器發(fā)送referer;

例如:

<meta content="never" name="referrer">

使用 Referer Meta 標(biāo)簽控制 referer

使用場景

在某些情況下,出于一些原因,網(wǎng)站想要控制頁面發(fā)送給 server 的 referer 信息的情況下,可以使用這一 referer metadata 參數(shù)。

隱私

社交網(wǎng)站一般都會有用戶個人頁面,這些頁面中用戶都有可能添加一些外網(wǎng)的鏈接,而社交網(wǎng)站有可能不希望在用戶點擊了這些鏈接的時候,泄露用戶頁面的 URL ,因為這些 URL 中可能包含一些敏感信息。當(dāng)然,有些社交網(wǎng)站可能只想在 referer 中提供一個 hostname,而不是完整的 URL 信息。

安全

有些使用了 https 的網(wǎng)站,可能在 URL 中使用一個參數(shù)(sid 等)來作為用戶身份憑證,而又需要引入其他 https 網(wǎng)站的資源,這種情況下,網(wǎng)站肯定不希望泄露用戶的身份憑證信息。

Object-Capability Discipline

有些網(wǎng)站遵循Object-Capability Discipline,而 referer 剛好與這一策略相悖,所以,網(wǎng)站能夠控制 refeer 將對 Object-Capability Discipline 很有利。

技術(shù)細(xì)節(jié)

referer 的 metedata 參數(shù)可以設(shè)置為以下幾種類型的值:

never
always
origin
default

如果在文檔中插入 meta 標(biāo)簽,并且 name 屬性的值為 referer,瀏覽器客戶端將按照如下步驟處理這個標(biāo)簽:

1.如果 meta 標(biāo)簽中沒有 content 屬性,則終止下面所有操作

2.將 content 的值復(fù)制給 referrer-policy ,并轉(zhuǎn)換為小寫

3.檢查 content 的值是否為上面 list 中的一個,如果不是,則將值置為 default

上述步驟之后,瀏覽器后續(xù)發(fā)起 http 請求的時候,會按照 content 的值,做出如下反應(yīng)(下面 referer-policy 的值即 meta 標(biāo)簽中 content 的值):

1.如果 referer-policy 的值為never:刪除 http head 中的 referer;

2.如果 referer-policy 的值為default:如果當(dāng)前頁面使用的是 https 協(xié)議,而正要加載的資源使用的是普通的 http 協(xié)議,則將 http header 中的 referer 置為空;

3.如果 referer-policy 的值為 origin:只發(fā)送 origin 部分;

4.如果 referer-policy 的值為 always:不改變http header 中的 referer 的值,注意:這種情況下,如果當(dāng)前頁面使用了 https 協(xié)議,而要加載的資源使用的是 http 協(xié)議,加載資源的請求頭中也會攜帶 referer。

例子

如果頁面中包含了如下 meta 標(biāo)簽,所有從當(dāng)前頁面中發(fā)起的請求將不會攜帶 referer:

<meta name="referrer" content="never">

如果頁面中包含了如下 meta 標(biāo)簽,則從當(dāng)前頁面中發(fā)起的 http請求將只攜帶 origin 部分(注:根據(jù)原文中的語境,我理解這里的 origin 是包含了 schema 和 hostname 的部分 url,不包含 path 等后面的其他 url 部分),而不是完整的 URL :

<meta name="referrer" content="origin">

注意:在使用本文中所述的 meta 標(biāo)簽的時候,瀏覽器原有的 referer 策略將被打破,比如從 http 協(xié)議的頁面跳轉(zhuǎn)到 https 的頁面的時候,如果設(shè)置了適當(dāng)?shù)闹?,也會攜帶 referer。

其他問題

這與 rel=noreferer 有什么關(guān)系呢?可能 rel=noreferer 會覆蓋掉本文中的 meta 標(biāo)簽所設(shè)置的值。也就是功能覆蓋。
origin 信息不是一個完整的 url,所以瀏覽器客戶端估計會在 origin 后面加一個 / 來作為 path 部分。
如果 origin 是唯一的,會發(fā)生什么情況呢?估計 referer 會被忽略。

相關(guān)文章

  • Git commit --amend 修改提交信息操作

    Git commit --amend 修改提交信息操作

    這篇文章主要介紹了Git commit --amend 修改提交信息操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • 安全校驗Session驗證碼并避免繞開驗證碼攻擊

    安全校驗Session驗證碼并避免繞開驗證碼攻擊

    校驗驗證碼的Session是否為空或者校驗用戶輸入的驗證碼是否合法,構(gòu)造安全表單的關(guān)鍵就是永遠(yuǎn)不要相信用戶的輸入
    2012-01-01
  • VSCode如何巧用正則表達(dá)式快速處理字符段

    VSCode如何巧用正則表達(dá)式快速處理字符段

    正則真的好用,平時工作用正則最多的地方就是在編輯器里做查找替換,下面這篇文章主要給大家介紹了關(guān)于VSCode如何巧用正則表達(dá)式快速處理字符段的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • idea?git拉取代碼特別慢的問題及解決

    idea?git拉取代碼特別慢的問題及解決

    這篇文章主要介紹了idea?git拉取代碼特別慢的問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • kafka?rabbitMQ及rocketMQ隊列的消息可靠性保證分析

    kafka?rabbitMQ及rocketMQ隊列的消息可靠性保證分析

    這篇文章主要介紹了kafka?rabbitMQ及rocketMQ隊列的消息可靠性保證分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • 自己的vscode-settings.json配置詳解

    自己的vscode-settings.json配置詳解

    這篇文章主要介紹了自己的vscode-settings.json配置,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • 完美解決瀏覽器輸入http被自動跳轉(zhuǎn)至https問題

    完美解決瀏覽器輸入http被自動跳轉(zhuǎn)至https問題

    很多朋友問小編瀏覽器輸入http被自動跳轉(zhuǎn)至https問題,到底該怎么解決呢,其實解決方法很簡單,主要關(guān)閉瀏覽器的HSTS功能就可以了,關(guān)于http自動跳轉(zhuǎn)至https的解決方法跟隨小編一起看看吧
    2021-05-05
  • IDEA Git Stash 使用詳解

    IDEA Git Stash 使用詳解

    這篇文章主要介紹了IDEA Git Stash 使用詳解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • ffmpeg網(wǎng)頁視頻流m3u8 ts實現(xiàn)視頻下載

    ffmpeg網(wǎng)頁視頻流m3u8 ts實現(xiàn)視頻下載

    這篇文章主要為大家介紹了ffmpeg網(wǎng)頁視頻流m3u8 ts實現(xiàn)視頻下載詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Git 常用命令清單(整理且詳細(xì))

    Git 常用命令清單(整理且詳細(xì))

    git我每天幾乎都在使用,但是很多命令還是記不住,下面小編給大家分享了Git 常用命令清單,感興趣的朋友一起看看吧
    2017-10-10

最新評論