[英]Prevent direct url access to files
背景資料:
我正在建立一個網站,通過訂閱服務提供圖像和視頻內容。 也就是說,只要用戶成功登錄,用戶就應該只能訪問圖像和視頻內容。 (注意:登錄系統使用MySQL DB的組合 - 存儲用戶名和密碼 - 和php創建新的用戶會話/身份驗證等)
問題:
如何阻止用戶(登錄或不登錄)直接訪問圖像和視頻文件? 例如,未登錄的用戶可以直接訪問該文件,如下所示:www.domain.com/testvideo.mp4 - 這將在瀏覽器中呈現視頻內容,供他們觀看或與他人共享。 (注意:我仍然需要能夠通過HTML,CSS,PHP等在現場使用/顯示圖像和視頻文件)
我已經嘗試了幾個成功阻止直接訪問的.htaccess解決方案(包括:RewriteCond / RewriteRule和.htpassword)但是已經阻止了通過HTML,CSS,PHP等在現場使用文件的能力。
我認為這一定是一個非常普遍的問題,如果是這樣,解決問題的最佳方法是什么?
這是一個非常常見的問題,有一個很常見的解決方案。 為了強制訪問控制,您必須在提供文件之前調用PHP腳本並驗證憑據。 然后,如果憑據有效,請提供實際文件。
您可能想要使用readfile
東西直接從PHP腳本提供文件。 這將破壞您的服務器性能並破壞客戶端的下載恢復。
幸運的是,當您可以將實際文件服務交還給Web服務器時,有一個解決方案。
其工作原理如下:
/file.mp4
的請求。 /serve.php
。 示例腳本可以是:
$file = '/tmp/file.mp4'; // it is in your best interest to make this file inaccessible for a direct download
header('X-Sendfile: ' . $file);
header('Content-Type: ' . contentType($file));
header('Content-Disposition: inline;');
為了使其工作,您必須在Apache上安裝mod_xsendfile( https://tn123.org/mod_xsendfile/ ),這可能已經是您的主機的情況。 您還需要刪除一些行來配置它並設置正確的重寫。
您可以通過發布“mod_xsendfile php”來解決Google上的大量問題,這可能也會有很大幫助。
希望有道理!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.