2012-02-20 182 views
3

我正在製作一個新聞通訊編輯器,允許上傳文件(通訊的發送者可以上傳文件到服務器,這個文件將被鏈接到電子郵件中)。上傳的白名單或黑名單文件擴展名?

該網站已設置爲只有.do URIs實際上由servlet執行/處理,因此它沒有太大的安全風險,但我被告知黑名單.jsp,.php,.asp,.aspx ,.exe,.com和.bat。這並不是一個全面的黑名單,我認爲黑名單不是一個好策略。

另一方面,白名單會長達數十年。什麼是識別允許/不允許的擴展的正確方法?或者,允許任何事情並通過病毒掃描程序或它們的某種組合來運行它更合適嗎?

回答

3

還是更適合只允許任何內容並通過病毒掃描程序運行它。

是的。

這兩個黑名單和白名單都是平凡的規避,並導致行政管理的痛苦,並提供任何安全。

0

在我看來,儘管白名單可能有點難以維護,但它比使用黑名單更安全。

忘記向白名單添加內容並返回並更改內容要比忘記將新文件擴展名添加到黑名單並遭到黑客入侵要好得多。

除白名單,我還是病毒掃描上傳的文件,因爲即使是看似無害的文件(如.PDF或.doc)可以有惡意代碼(.PDF的支持JavaScript,和.doc宏)

1

我會允許上傳任何文件擴展名,但我會將文件存儲在不直接由Web服務器提供的文件夾中。然後,我會創建一個HTTP處理程序,該程序將從電子郵件鏈接到該電子郵件,這將流式傳輸所請求的文件。該文件可以通過原始文件名,系統生成的文件名或ID來請求。無論哪種方式,我會清理參數,以防止目錄遍歷攻擊。

例如www.example.com/FileLink.ashx?FileName=Word.docx

這樣,您不必擔心如果將來您希望將其他文件擴展名作爲可執行文件類型提供服務,因爲任何文件都是直接從來自文件系統的字節流,並且永遠不會通過Web服務器處理程序傳遞。

這也是值得病毒掃描每個文件,以防萬一通訊作者上傳(惡意或意外)的文件,將攻擊用戶的計算機,而不是服務器。

1

我會建議你:

  • 使用白名單的方式(通過上述的原因,這是相當 更安全)
  • 檢查文件類型(旁路但仍多一個指標)
  • 商店上傳文件在未公開的內部文件夾中(使用非枚舉ID)
  • 設置文件夾中包含上傳文件的低級權限
  • 爲上傳的文件設置儘可能少的權限
  • 確保沒有安全的庫來上載已可用的文件。

防病毒軟件不值得。因爲任何「黑客」都可以添加一些隨機代碼並在Web shell上執行不同類型的編碼,所以大多數Web shell簽名都很容易繞過。當然,它會保護你免受C99等常見外殼的侵擾,但是現在有數以千計的這些工具是公開可用的,並且完全無法檢測到。爲了保護用戶免受您網站上託管的可執行文件或受感染的PDF的影響,如果有人能夠在您的網站上獲得shell並啓動惡意軟件活動,它將不會使用已經通過av簽名發現的惡意軟件或病毒。