2013-07-09 28 views
0

我有一個前端服務器,其中包含用戶可以下載的各種信息的信息以及包含這些文件的一些後端服務器。當用戶點擊文件的下載鏈接時,它們被重定向到具有這些文件的後端服務器。如何只接受我的服務器中從某些特定服務器重定向的請求

現在我想在我的後端服務器接受請求,當且僅當請求從前端服務器重定向時,以便用戶無法直接訪問後端服務器。

有沒有辦法做到這一點?請幫幫我!

謝謝

回答

1
if(isset($_SERVER['HTTP_REFERER']) && ($_SERVER['HTTP_REFERER']=='yoursite.com') { 

    } 

「HTTP_REFERER」 - 網頁(如果有的話),其中提到的用戶代理到當前頁面的地址。這由用戶代理設置。並非所有的用戶代理都會設置它,有些提供了將HTTP_REFERER修改爲功能的功能。總之,它不能真正被信任(source)。

0

問題是,當您的前端服務器將用戶重定向到您的後端服務器時,它會「通過用戶」執行此操作。

也就是說,「www.front-end.com」告訴用戶爲她的HTTP referer頭域賦值「www.front-end.com」,然後將這個HTTP請求發送到「www.back-end.com」 end.com」。聰明的用戶可以修改她的標題並欺騙你的系統。

對於您的情況,您應該做一些更多的工作並實施Rapidshare或Megaupload或大多數其他文件主機所做的事情。

其中一個想法可能如下:前端生成一個祕密的隨機字符串(「$ ticket」)。然後它將它傳遞給後端(通過curl或直接)將其存儲到後端的數據庫中。然後在前端將用戶重定向以下列方式:

header("Location: http://www.back-end.com/index.php?ticket=$ticket"); 

後端比較了票,並讓用戶在

你還需要一些防範濫用它像一段時間後無效票的時間。

+0

感謝您的回覆。有沒有辦法使用htaccess文件來做到這一點。 – mehedi

+0

我不這麼認爲。 –

相關問題