2009-03-05 58 views
3

我需要嘗試和欺騙HTTP_REFERER通過我的另一個頁面,以便在目標頁面中,我可以確定請求是從「正確的」頁面進入並執行適當的邏輯。你如何欺騙HTTP_REFERER?

  1. 我該如何在JavaScript(AJAX)中做到這一點?
  2. 我可以在ASP.Net中做到這一點嗎?

TIA 公羊

回答

9

一般來說,你不能導致其他瀏覽器沒有漏洞,插件,或其他擴展返回假HTTP_REFERER。如果您想修改您的網絡瀏覽器發送的值並使用FireFox,請查看Modify Headers擴展。

在任何情況下,您都不應該依賴HTTP_REFERER的準確性。無法保證您收到的HTTP_REFERER不是僞造的或者僅僅是未發送的。

+0

感謝您的鏈接。我會檢查出來的。 – rams 2009-03-05 23:10:44

+1

如果您使用Chrome [ModHeader](https://chrome.google.com/webstore/detail/modheader/idgpnmonknjnojddfkpgkljpfnnfcklj)擴展程序,請執行此項工作! – GiDo 2015-07-22 09:22:25

2

如果您想在目標頁面測試請求是否來自「正確」頁面,則不需要欺騙引用者。您只需從其他頁面發出請求即可。在您認爲是「正確」的網址的另一個網址上設置網頁,然後通過點擊指向目標網頁的鏈接或從目標網頁發出圖片發出請求。

+0

調用頁面來自我無法訪問的客戶端應用程序。因此,我不需要在黑暗中進行編碼,而需要「欺騙」引用者並測試我的頁面。 – rams 2009-03-05 23:10:12

2

它已被提及,你不能真正欺騙的東西。但要說明的是,HTTP_REFERER頭由瀏覽器生成,所以在服務器端你無法控制它(包括切換javascript,可能會或不會被啓用)。

如果你只是想測試你的頁面一定的標題(如「引薦」)的響應,你可以使用命令行工具,如curlwget這在大部分BSD和Linux兩種型號(包括OS/X)。如果您使用的是MS Windows,則可以使用Cygwin來獲得curl或wget。

wget -O - --referer="http://example.com/some/path" http://example.com/ 

curl -e "http://example.com/some/path" http://example.com/ 

但是你的核心原因這樣做顯然是爲了「保護」的網頁,我想。如果您確實想確保一個頁面(稱爲「B」)只在首先訪問其他頁面(「A」)後訪問,那麼您需要在服務器端更復雜的邏輯。

如果您要存儲會話cookie,則可以在設置布爾變量的頁面「A」中嵌入一些邏輯。然後在頁面「B」中添加邏輯,檢查以確保變量已設置。

我將把它作爲練習讓讀者瞭解如何在ASP.NET中執行此操作。 (因爲我是一個PHP程序員; - ])