2013-03-15 134 views
2

我在我的服務器上運行了PDF.js,但我無法公開我的文件路徑(或理想情況下,將我的文件移動到Web根目錄之外),我正在努力實現它。如何隱藏PDF.js中的文件路徑

例如我可以實現直通PHP,我叫 http://example.com/view?file=yyy.pdf&subdir=zzz

,然後我可以使用PDF.js打開位於發言權文件,http://example.com/obscure/zzz/yyy.pdf (而不是調用http://example.com/viewer?file=http://example.com/obscure/zzz/yyy.pdf

,或者更好的, webfoot以外的文件: /absolute/path/zzz/yyy.pdf

+1

FYI:[example.com](http://example.com)是有原因的。 – 2013-03-15 00:37:57

+0

已經被回答: http://stackoverflow.com/questions/10834196/secure-files-for-download – 2013-03-15 00:47:23

+0

是的!這會打開文件,謝謝。但我不確定PDF.js如何描述這一點。 – littlered 2013-03-15 00:58:59

回答

0

NB 2013年3月26日 - 道歉,因爲我將不得不收回原始答案。

事實證明,HTTP_REFERER(總是被拼寫錯誤)對安全性來說不可靠,因爲它很容易被欺騙。

我將在下面留下一些原始的想法,因爲它表明不該做什麼,相信這將是安全的,但首先將佈置一個替代方案。

任何基於密鑰的替代方案的基本挑戰是,無論發送來回解鎖網站外文件訪問,都可以通過瀏覽器以各種方式顯示,這是PDF.js實際運行並請求訪問。即使身份驗證機制避開主屏幕,或者使用SSL保護通道,情況也是如此。

我現在想出的最好的方法是一個時間限制鍵,接受這個有一些實際的困難。但是,即使偶爾出現網絡減速,但我們發現,時間窗口可能相當短,因爲關鍵訪問發生在下載文檔的開始處。

SSL將是任何高安全性安排的要求,否則可以監聽網絡連接並在超時時間內重新使用密鑰。啓動PDF.js的身份驗證系統需要與文檔網關協調PDF.js用於回撥和訪問的密鑰。這可以通過CMS數據庫可能實現的服務器內消息來完成。

因此,這看起來像一個可能的設計,如果不是在一個小時內完成的話。如果SSL用於原始用戶登錄以及基於時間的密鑰,則可能認爲它與在線銀行一樣安全,包括現實生活中的人員因素。

這裏是原來的缺陷觀念的意識,以供參考:

似乎有一個簡單的,但現在看到的虛假答案保護的文件,通過使用一個.htaccess條件只允許你的本地供應pdf.js文件的權限,以保存PDF文件的目錄。該目錄需要位於網站內,因爲pdf.js訪問網絡空間而不是文件空間。這裏的條件和響應的形式,你可以調整你的網址和pdf.js位置:

Options -Indexes 
RewriteEngine On 
RewriteCond %{HTTP_REFERER} !^(http|https)://(www.)?yourdomain\.com/yourfolder/s/pdf\.js$ 
RewriteRule .* - [F]