pre-signed-url · L6

POST policy 上傳

POST policy 上傳:能限制內容的直傳

一句話:presigned PUT 綁不住上傳內容(body 沒被簽),POST policy 用一份「條件文件」讓 S3 強制檢查大小、型別、key 前綴——是給不受信任前端直傳的更安全選擇。

為什麼需要它

回想 Level 5:presigned PUT 的 payload 是 UNSIGNED-PAYLOADbody 沒被簽,所以拿到 URL 的人能傳任何內容、任何大小。想卡「只能傳 5MB 以下的 JPEG」,PUT 做不到——POST policy 就是補這個洞的。

它怎麼運作

policy 能限制什麼

條件作用
content-length-range檔案大小的下限/上限
Content-Type只允許某些型別(如 image/*
key 前綴只能傳進某個路徑(如 uploads/用戶ID/
expirationpolicy 的到期時間

跟 presigned PUT 的取捨

presigned PUT:簡單、一條 URL 搞定,但內容不設限。
POST policy:要組 policy、稍複雜,但能卡大小/型別/路徑。
結論:讓「不受信任的前端」直傳,POST policy 通常更安全;內部可信、只圖方便,presigned PUT 就夠。

參考來源