2016-08-24 81 views
0

我有一個web應用程序,用於管理文件/上傳中的jpg圖像。我想拒絕訪問url:domain.com/upload/image.jpg中的所有圖片/上傳,但授予訪問/page.php的權限。我試過/upload/.htaccess,但它也拒絕訪問我的/page.php文件。如何拒絕訪問目錄中的所有文件,但允許從其他目錄中的特定php文件訪問?

有什麼建議嗎?

+0

如何'page.php' 「負荷」 的形象呢?通過閱讀圖像(使用'fopen()'或其他)並返回圖像數據或通過簡單鏈接到'/ upload/image.jpg'? –

+0

創建子文件夾圖像並將其中的所有圖像嘗試重定向匹配。把page.php放在upload/page.php中。 RedirectMatch ^/upload/images/$ http://example.com/ – Rahi

+0

感謝回覆@JonLin圖片通過鏈接加載/upload/image.jpg –

回答

0

獲得的圖像被聯繫起來/upload/image.jpg

如果您是從page.php產生的,然後使用htaccess的阻止它的唯一辦法內容聯繫起來裝是檢查「Referer」(原文如此)頭文件。這個頭部信息由瀏覽器發送,讓服務器知道哪個URL告訴它加載該資源。如果有人直接轉到圖片,引用者可能是空白的(例如,如果他們在URL地址欄中鍵入)或者從page.php鏈接,那麼引用者會說/page.php。然而,查閱者很容易被僞造,所以這不是阻止訪問的可靠手段。

在htaccess文件在你的文件夾/upload/嘗試添加:

RewriteEngine On 
RewriteCond %{HTTP_REFERER} !/page\.php$ 
RewriteCond %{REQUEST_URI} !\.php$ 
RewriteRule^- [L,F] 
+0

我將此添加到我的.htaccess文件: 'RewriteEngine敘述在 的RewriteCond%{HTTP_REFERER} /頁\ $ .PHP 的RewriteCond%{REQUEST_URI} \ PHP $'重寫規則^ - [L,F]!。 ' **顯然加了我的頁面名稱 **清除了我的緩存 PHP頁面就像一個魅力,但我仍然可以在地址欄中鍵入URL並獲取圖像。 –

+0

@BryanJ如果你已經加載了圖像,它會被緩存。你有沒有嘗試清除緩存,然後試圖直接去圖像? –

+0

是的,我清除了我的緩存。 –

相關問題