2017-08-07 55 views
1

我們使用S3進行圖片上傳。我們批准上傳到我們網站的所有圖片。該過程如下:亞馬遜S3:不允許客戶端修改已上傳的圖片嗎?

  1. 客戶端在給定路徑上從JavaScript上載圖像到S3上。 (使用令牌)
  2. 有一次,我們從S3取回網址,我們在數據庫中用照片表中的'isApproved flag false'保存了S3路徑。
  3. 一旦通過我們的主管批准圖像,圖像就開始在我們的網站上顯示。

問題是用戶可能會通過生成的令牌在批准過程後更改圖像(對某些淫穢圖像)。我們能以某種方式阻止用戶像這樣修改圖像嗎?

一個臨時修復方法是縮短令牌生存時間間隔,即5分鐘,並僅在該間隔後批准圖像。

我看到this但沒有幫助,因爲版本控制也取代了已經上傳的圖像,並將之前上傳的圖像移動到了新版本的路徑。

任何更好的解決方案?

+4

您可以將批准的圖像移動到具有不同權限集的其他存儲桶(或文件夾)(只讀訪問)。 –

+1

擴展@ KhalidT。的評論,似乎你不應該讓用戶將對象寫入最終發佈的路徑。當你「批准」他們時你應該這樣做。 –

回答

1

您應該爲上傳的圖像創建一個工作流程。這一過程將是:

  • 客戶端上傳圖像
  • 這會觸發一個Amazon S3事件通知給你/你的系統
  • 如果您批准的形象,將其移動到提供公共水桶您內容
  • 如果您不同意的圖像,將其刪除

這個目標可以使用AWS lambda函數來更新數據庫,並標記照片的批准是一個自動化的過程,或者它可以做手工在通過亞馬遜SNS收到電子郵件通知後。這個選擇由你。

這種方法的好處是一旦批准任何東西都不能被替代。

+0

一個問題 - 我們有兩類圖像,1.任何網站用戶都可以上傳,2.其他類別的圖像是內部上傳。我們只需要爲用戶上傳的圖像執行審批流程。我怎樣才能做到這一點? – maverick

+0

「如果您批准圖片,請將其移動到爲您的內容提供服務的公共存儲區」..我們只有一個存儲區,並且該存儲區中的圖片可以創建/編輯/刪除 – maverick

+0

然後將其移至其他目錄。否則,未經批准的上傳將覆蓋批准的上傳。您可以設置權限,以便客戶端只能上傳到「上傳目錄」,一旦獲得批准,您就可以將其移至「公共目錄」。 –