2011-01-13 52 views
0

我有一個關於Ruby on Rails的問題。我目前使用稱爲Paperclip的gem來允許我上傳文件。RoR上傳文件安全問題

我的問題是上傳的文件進入/ public,很容易從任何人訪問。我如何去隱藏上傳的文件?只允許正確的用戶下載文件?

我不想隱藏某人的鏈接。但是我有興趣知道某人必須登錄才能下載該文件。

謝謝。

編輯 - http://rdoc.info/github/thoughtbot/paperclip/master/Paperclip/Storage/Filesystem

我還是不明白我是如何確保在後端的文件嗎?

回答

2

您可以通過多種方式處理此安全問題。

這是我向你推薦的一個。

  1. 您使用回形針上傳您的文件。這些文件將被存儲到您拒絕來自瀏覽器的訪問的目錄中。

  2. 在上傳過程中,您會將文件的信息存儲到數據庫服務器的表中。

  3. 您將創建一個控制器來列出並下載您的文件。您可以通過檢查他的權利來檢查用戶是否可以訪問或下載該文件。

  4. 當您要開始下載時,您將使用send_file強制下載,並隱藏文件的真實路徑。

    例子:

    @filename ="#{RAILS_ROOT}/public/dir/a/b/file.mp3" 
    send_file(@filename, :filename => "music.mp3") 
    

希望這有助於!