2009-12-05 58 views
2

我們正在提供一個網頁表單,用戶可以填寫他們的個人信息;其中一些是敏感信息(SSN,生日等)。用戶提交後,數據預先填充到PDF中,然後通過鏈接提供。向用戶顯示PDF

我們正在創建一個文件夾,在網站上有寫權限的PDF。

我們如何安全地在這個文件夾中創建和添加PDF,並使用任何命名方案(使用GUID?),以便其他用戶無法猜測/欺騙PDF文件的位置,在URL中輸入以及訪問另一個人的PDF ?

也許PDF文件夾只具有特定於用戶的權限,但這可能是完成這個過程的另一個問題。 (用戶數量未知,因爲這將向公衆開放)。

對此有何看法?在堅果殼中,我們需要允許用戶查看他們剛剛輸入的數據的PDF,同時防止更精明的用戶找出PDF文件的位置,從而允許訪問其他文件。

謝謝!

回答

1

試圖混淆文件的路徑並不能真正保證文件的安全。我會找到一種通過電子郵件或其他方式爲用戶提取的方式,而不是允許訪問打開的目錄。

使Web應用程序爲用戶獲取文件,而不是依賴Web服務器打開的文件夾權限。

只要記住混淆並不是真正的安全。

0

如果確實只是暫時的,請在臨時目錄中創建一個完全隨機的文件(20384058532045850.pdf),並立即將其提供給用戶,並在一段時間後將其刪除。

無論您的網絡應用程序是否具有該目錄的寫權限(我假設您正在談論chmod用戶權限)並不重要,它不能通過Web服務器被突破,並且我沒有發現問題揭示目錄路徑本身 - 你必須透露給用戶一個URL下載的東西。如果您的PDF名稱足夠隨意,則實際上沒有人能夠猜測同一目錄中另一個PDF文件的名稱。

由於PDF包含敏感數據:不要忘記關閉緩存,以防止本地副本保存在客戶端的瀏覽器緩存中。

我不確定是否通過適當的標頭關閉緩存足以阻止所有瀏覽器中的本地緩存。你可能需要研究一下。

0

對於pdf的目的,它會不會更好(我知道我會因爲這個而燃起火花)將實際的pdf作爲一個BLOB存儲在數據庫中,該BLOB將位於網站的後端有問題嗎?

在任何地方都不會引用URL,也不會在該表單的任何鏈接中突出顯示特定的路徑。

希望這會有所幫助, 最好的問候, 湯姆。

0

最簡單的方法是通過應用程序代理文件(例如,在php中使用fpassthru()),這允許您使用您已經用於動態內容的訪問控制/識別系統。

如果您沒有任何方法來識別您的用戶並限制訪問權限,並且假設您的平臺具有安全的會話機制,則可以通過將文件名存儲在用戶會話中然後返回該文件來保護該文件(以及只有該文件)在請求時發送給用戶。這應該意味着攻擊者必須欺騙會話才能訪問文件,所以這應該與會話機制一樣安全。