簡體   English   中英

信任文件上傳中的“內容類型”

[英]Trusting “Content-Type” on File Uploads

如果我支持REST API用戶上傳內容(主要是圖片和視頻),那么信任他們在(多部分)上傳中聲明的Content-Type是否安全 或者,我應該在內容上運行某種“媒體類型檢測”(例如,使用Apache Tika)以確保聲明的媒體類型與檢測到的實際媒體類型相對應? 通過介紹這種媒體類型檢測步驟,我是否過度熱心?

永遠不要相信您從用戶那里得到的輸入。 始終檢查服務器端代碼,包括文件類型,文件大小等。使用REST API或Javascript可以使用戶的體驗更流暢,更快捷。

您當然不應該盲目信任Content-type標頭或任何其他標頭。 應該使用這些東西來告知您有關如何處理請求的決定。 因此, Content-type: application/json應該允許您將消息體解釋為json對象 - 然后可以將這種請求傳遞給JSON反序列化器以將其綁定到對象。

忽略Content-type標頭是錯誤的,因為請求主體包含看起來像其他東西的數據。 如果請求內部不一致,則應拒絕該請求。 發送Content-type標題是一回事,但標題錯誤則是另一回事。

因此,您可能希望使用某種自動檢測的唯一情況應該是您沒有關於內容的合理信息 - Content-Type非常通用(例如“ / ”)或根本不存在。 在那種情況下,值得決定某種自動檢測是否可能或有價值。

您絕對應該拒絕所有缺少Content-Type標頭的請求(以及Content-Length )或者設置不正確。

這絕對不是要過度熱心,而是要保護系統。 如果您對內容有疑問,請檢查一下。 但請記住在檢查內容之前驗證大小。 如果你有一個代理服務器(例如nginx),它有適當的模塊來拒絕太大的請求。

暫無
暫無

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

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