簡體   English   中英

防止通過URL直接訪問PDF文件

[英]Prevent direct PDF file access from URL

此處重定向,當有人使用直接URL訪問PDF (或任何其他)文件類型時,我需要阻止對其進行訪問。

問題

假設您有一個PDF文件,希望訪問者可以在自己的網站上下載。

但是,如果有人要復制此鏈接並直接從瀏覽器窗口中調用它,或者如果他們要將該鏈接發布到另一個網站上的PDF,則該文檔將不可訪問。 默認情況下是。

我成功隱藏了地址欄中的pdf文件路徑,並且形成的url為http://localhost/myproject/web/viewer.php?id=11&name=sample.pdf ,但是在控制台中可以看到完整的路徑,例如http://localhost/myproject/document/11/sample.pdf

此代碼在第二次頁面重新加載時成功重定向,但是當我從控制台中選擇“ Open in new tab時,重定向失敗。

RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost [NC]
RewriteCond %{REQUEST_URI} !hotlink\.(pdf) [NC]
RewriteRule .*\.(pdf)$ http://google.com/ [NC]

.htaccess以下代碼中使用以防止訪問

RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost [NC] 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost.*$ [NC] 
RewriteRule \.(pdf)$ - [F]

不知何故,它無法正常工作。 僅當我按CTRL+SHIFT+R鍵時,它顯示文件禁止消息,否則使用文件URL仍然可以訪問它。

我想防止直接在網址欄中顯示為http://localhost/myproject/document/11/sample.pdf的pdf文件

如果您有權訪問數據庫,則可以將文件存儲在Blob字段中。 這樣,您可以輕松編寫代碼以保護自己喜歡的文件。

您可以將PDF文件不存儲在webroot文件夾中,並使用PHP返回其內容。 例如,用戶URL將類似於:

http://localhost/myproject/document.php?hash = some_hash`

在文件document.php您將使用file_get_contents函數從$_GET參數獲取哈希值。 同樣在這種情況下,您只能允許一次訪問

希望對您有所幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM