我正在使用$ _SERVER ['HTTP_REFERER']來生成動態反向鏈接。
<a href="<?php echo $_SERVER['HTTP_REFERER'] ?>">Return to..blah</a>
這樣做是否合理安全?
我正在使用$ _SERVER ['HTTP_REFERER']來生成動態反向鏈接。
<a href="<?php echo $_SERVER['HTTP_REFERER'] ?>">Return to..blah</a>
這樣做是否合理安全?
不是那樣的。
它可能不存在。 (這可能是錯誤的,一些個人防火牆軟件包出於隱私原因混淆了引用者,並且一路違反了HTTP規範)
您應該運行任何來自系統外部的任何通過htmlspecialchars
來防範XSS攻擊(儘管IIRC,引用者不應該有任何危險的字符,因爲他們應該是URL安全的,你應該保持總是謹慎的習慣)。
雖然瀏覽器帶有後退按鈕,但不需要嘗試複製它們的功能(尤其是當用戶點擊標記爲「後退」的鏈接時,它不會將它們帶回歷史中,點擊正常的後退按鈕將在概念上將他們轉發)。
它可能根本沒有設置,不僅空白。 – 2011-05-09 09:14:23
好點,編輯得更清楚。 – Quentin 2011-05-09 09:15:38
它可能是安全的,但它是不可靠:由於HTTP spec,HTTP_REFERER
是可選的(某些客戶端完全不發送這個頭,並從任何HTTP請求一些「安全」軟件帶了這一點),並且有許多方法可以修改這個頭文件。有些瀏覽器發送推薦頁面,有些發送空白字符串,有些不發送,有些可能發送僞造數據,有些可能會發送Matilda阿姨;此外,您無法判斷您是否在此標頭中獲取有效數據。
所以,不,我永遠不會相信HTTP_REFERER
包含上一頁,也不應該。
+1我已經把最後一個HTML請求頁面引用的第一個文件設置爲引用器多次,通常是'favicon.ico'或者一個css文件。這發生在Firefox和Chrome中。 – 2011-06-04 05:48:48
不是。 它可能未設置,不需要或甚至不安全。
海外商品會有如下:
安全可靠,抵禦XSS攻擊,還是安全的,因爲「將始終包含有效值」? – 2011-05-09 09:09:52
REFERER並不總是存在,所以你的方法在某些情況下不起作用。 – 2011-05-09 09:13:10