2010-01-08 49 views
0

我正在使用PHP 的header函數將文件發送到瀏覽器並顯示一些小代碼。它的工作很好 ,我有它,所以如果任何人請求與除我的網站 以外的引薦人它首先重定向到一個頁面。 不幸的是,它不與互聯網下載管理器。如何保護我的網站免受瘙癢?

我想知道的是rabidshare和4shared網站如何做到這一點。

+1

我不明白你提到的網站是做什麼的,你想效仿。你是否試圖阻止盜鏈或是其他事情?我會雖然有東西(會話cookie?)傳遞給下載管理器,但我不知道。有幾種方法可以解決這個問題,但這取決於你想要什麼以及管理人員的工作方式。 – Draemon 2010-01-08 18:21:06

回答

2

您可以使用會話來確保有效用戶正在請求下載。

2

並非所有可以看到網頁的瀏覽器/軟件都會將Referer發送到您的服務器。有些網站會製作瀏覽器「指紋」,通常是哈希值,可能是Referer,User-Agent和其他一些頭文件串在一起,爲該用戶創建唯一標識符,從而限制訪問,如您所描述的。

當然,我可能已經完全錯過了你的帖子的要點!

2

典型的設計模式是使用前端控制器爲所有請求提供一個入口點。通過使用前端控制器,您可以精確控制客戶所看到的內容。

您可以在Apache中對此進行配置,以便所有請求都通過一個文件(我已經完成了一段時間,因爲我現在專注於Java)。我認爲你需要查看Apache的pathinfo文檔。

這可能需要對其餘應用程序代碼進行重大更改。但是,從長遠來看,代碼將更加安全和可維護。

我已經通過這種模式提供圖像和其他二進制文件。這使我能夠在實際發送文件之前輕鬆驗證用戶是否已通過身份驗證。混淆不是安全的,所以如果你依賴混淆你的URL,攻擊者可能會延遲入侵,但這只是時間問題。

沃爾特

1

的問題可能是,通過PHP腳本發送文件(你提到的頭)不支持在特定位置開始文件下載。下載管理器使用此功能使用多個併發線程下載文件(假設服務器以特定速度提供一個線程)。

對於小型項目,我建議製作帶有唯一文件名的文件副本,以便下載時間並將用戶重定向到此複製的文件。這樣他就可以獲得完整的服務器下載功能,而且它也不會像php那樣加載處理器。缺點 - 需要更多的磁盤空間,需要清理下載目錄。

相關問題