2011-05-09 95 views
14

我正在使用$ _SERVER ['HTTP_REFERER']來生成動態反向鏈接。

<a href="<?php echo $_SERVER['HTTP_REFERER'] ?>">Return to..blah</a> 

這樣做是否合理安全?

+3

安全可靠,抵禦XSS攻擊,還是安全的,因爲「將始終包含有效值」? – 2011-05-09 09:09:52

+0

REFERER並不總是存在,所以你的方法在某些情況下不起作用。 – 2011-05-09 09:13:10

回答

14

不是那樣的。

它可能不存在。 (這可能是錯誤的,一些個人防火牆軟件包出於隱私原因混淆了引用者,並且一路違反了HTTP規範)

您應該運行任何來自系統外部的任何通過htmlspecialchars來防範XSS攻擊(儘管IIRC,引用者不應該有任何危險的字符,因爲他們應該是URL安全的,你應該保持總是謹慎的習慣)。

雖然瀏覽器帶有後退按鈕,但不需要嘗試複製它們的功能(尤其是當用戶點擊標記爲「後退」的鏈接時,它不會將它們帶回歷史中,點擊正常的後退按鈕將在概念上將他們轉發)。

+1

它可能根本沒有設置,不僅空白。 – 2011-05-09 09:14:23

+0

好點,編輯得更清楚。 – Quentin 2011-05-09 09:15:38

5

它可能是安全的,但它是不可靠:由於HTTP specHTTP_REFERER是可選的(某些客戶端完全不發送這個頭,並從任何HTTP請求一些「安全」軟件帶了這一點),並且有許多方法可以修改這個頭文件。有些瀏覽器發送推薦頁面,有些發送空白字符串,有些不發送,有些可能發送僞造數據,有些可能會發送Matilda阿姨;此外,您無法判斷您是否在此標頭中獲取有效數據。

所以,不,我永遠不會相信HTTP_REFERER包含上一頁,也不應該。

+1

+1我已經把最後一個HTML請求頁面引用的第一個文件設置爲引用器多次,通常是'favicon.ico'或者一個css文件。這發生在Firefox和Chrome中。 – 2011-06-04 05:48:48

2

不是。 它可能未設置,不需要或甚至不安全。

海外商品會有如下:

  1. 在您的網址,點擊用戶類型去。不會有推薦人。您的後退按鈕不僅無法正常工作,還會收到通知錯誤。
  2. 訪問者來自您的產品頁面上的外部來源(讓我們說谷歌)。你想發送你的訪客回到谷歌?我不這麼認爲。
  3. 標題可以修改,我會去檢查它,或根本不使用它。
相關問題