簡體   English   中英

在Ruby On Rails中安全地上傳文件

[英]Secure File Upload in Ruby On Rails

我建立了一個使用Paperclip的照相館,並使用validates_attachment_content_type驗證了內容類型。

該應用程序在與Passenger共享的主機上運行。

是否可以繞過驗證並從public / pictures目錄運行惡意腳本? 如果是這樣,我有什么辦法可以避免運行或上傳惡意腳本?

是否可以繞過驗證並從public / pictures目錄運行惡意腳本?

是。 您可以擁有一個完全有效的可渲染圖像文件,其中還包含帶有腳本注入的HTML。 感謝虛假的內容嗅探,即IE,您已經毀了一切。

有關摘要,請參見http://webblaze.cs.berkeley.edu/2009/content-sniffing/

如果是這樣,我有什么辦法可以避免運行或上傳惡意腳本?

並不是的。 從理論上講,您可以檢查HTML標記的前256個字節,但是隨后您必須知道瀏覽器對什么內容進行嗅探的確切詳細信息,並且保持全面而最新的內容是沒有開始的。

如果您正在處理圖像並自己重新保存,可以保護您。 否則,請執行以下一項或兩項操作:

  • 僅提供來自其他主機名的用戶上傳文件,因此它們無權訪問cookie / auth詳細信息,而cookie / auth詳細信息將使注入的腳本XSS進入您的站點。 (但要注意非XSS攻擊,例如常規JavaScript /插件攻擊)

  • 通過包含“ Content-Disposition:附件”標頭的服務器端腳本為用戶上傳的文件提供服務,因此瀏覽器不會嘗試內聯查看頁面。 (但是請注意舊版本的Flash會忽略Flash文件)。這種方法還意味着您不必將文件存儲在服務器文件系統中的用戶提交的文件名下,從而節省了一些繁重且難以獲取的文件正確的文件名驗證工作。

暫無
暫無

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

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