我正在構建一個具有文件上傳功能的Rails應用程序,只有經過身份驗證的用戶才能上傳文件。文件上傳表單位於僅限會員區域,但由於抓取上傳URL並嘗試從腳本發佈數據非常容易,所以我擔心未經身份驗證的文件上載提交。確保上傳將被拒絕,但只有在數據傳輸完成並且浪費了寶貴的帶寬之後。如何在整個表單提交到我的服務器之前拒絕未經身份驗證的文件上傳?由於我無法使用腳本或CURL控制用戶,因此需要某種服務器端解決方案。我很欣賞任何反饋。謝謝。如何在數據傳輸完成之前拒絕文件上傳?
回答
這是在執行該操作之前,你可以做..時,執行的before_filter什麼(upload_form_action被上傳表單頁面,upload_action在於臨危文件
allowed_to_upload應的頁面簡單的僞代碼被幫手/功能/等,返回真/假,如果是假的,它會呈現403未經授權,否則將只是吝嗇。
before_filter :check_upload, :only => [:upload_form_action, :upload_action]
protected
def check_upload
render :nothing, :status => 403 and return unless allowed_to_upload
end
我目前有一個類似的before_filter設置來檢查用戶是否登錄。如果用戶沒有登錄,那麼它只是重定向用戶。我試過你的代碼,但是認證總是在文件完全上傳後進行。想象一下,一個聰明的用戶從html源代碼(包括真實性令牌和所有)抓取表單並使用它來嘗試上傳文件(不包含包含認證信息的cookie)。認證before_filter會拒絕文件的進一步處理,因爲用戶沒有登錄但沒有實際上傳 – SimKo 2011-02-28 03:23:35
問題在於Rails在完成(即上傳完成時)之前不處理該請求。不過,我懷疑你可以發送1GB的上傳請求到任何頁面,你不能做太多的事情。我需要看看這個 – nvez 2011-02-28 18:08:37
是的,我有一個暗示,這可能是這樣的。真正需要的是在文件上傳完成之前檢查cookie,然後終止上傳。我想知道是否有可能在全部完成之前處理這篇文章。 Cookies是在表單數據之前發送的,因此可能有機會檢查帖子,看看在表單數據流式傳輸到服務器時是否存在帶有認證數據的cookie。也許有一些Rack定製?我不知道在交付它之前,Web服務器是否緩衝了整個帖子。 – SimKo 2011-02-28 21:11:31
- 1. 如何在Django完成之前拒絕上傳?
- 2. 如何在php保存之前拒絕文件上傳?
- 3. 在上傳完成之前訪問文件數據在php中完成
- 4. 在上傳完成前訪問http上傳數據
- 5. FTP文件傳輸訪問被拒絕
- 6. 留意上完成文件傳輸
- 7. 如何在codeigniter上傳之前獲取文件數據
- 8. 上傳文件被Spring Security拒絕
- 9. aws lambda拒絕文件上傳
- 10. Django上傳文件 - 權限被拒絕
- 11. 在添加文本之前完成「傳輸」
- 12. 顯示文件上傳完成時上傳的文件總數
- 13. XCode上傳數據文件到iPad「權限被拒絕」?
- 14. 如何延遲完成位傳輸直到傳輸完成?
- 15. 爲什麼php://輸入拒絕我的大文件上傳?
- 16. PHP - 獲取上傳文件傳輸完成的時間戳
- 17. 完成上傳附件之前發送的PHP郵件
- 18. Blueimp文件上傳插件,進度條完成文件上傳
- 19. Synfony 3 + Vich上傳包 - 在上傳文件之前無法設置元數據
- 20. PHP拒絕上傳圖片
- 21. 上傳問題(拒絕)
- 22. 在第一位到達接收器之前,數據包傳輸是否完成?
- 23. 上傳作業在上傳成功之前的相同文件上失敗
- 24. 如何在上傳文件之前顯示文件的名稱。
- 25. 如何在上傳文件之前檢索文件的大小?
- 26. Python文件之間的數據傳輸
- 27. 如何在UIViewControllers之間傳輸數據?
- 28. 在上傳之前預覽SWF文件
- 29. SCRIPT5:訪問被拒絕在IE9上的文件上傳
- 30. 傳輸完成數據庫的
也許有一個的before_filter確保需要登錄上傳文件? – Shreyas 2011-02-27 17:52:49