2013-01-08 61 views
2

我允許用戶直接上傳到s3而不需要通過服務器;一切都很完美。我唯一擔心的是安全。用戶可以操作JavaScript來覆蓋S3 crossdomain.xml嗎?

在我的JavaScript代碼中,我檢查文件擴展名。然而我知道在JavaScript代碼用戶可以操縱腳本 - 在我的情況下允許上傳xml文件 - (因爲客戶端上傳),因此他們不能替換我的bucket中的crossdomain.xml,並相應地能夠控制我的桶?

注意:我正在使用存儲桶擁有者訪問密鑰和密鑰。

更新:

任何可能的途徑來解決這個問題......?

+0

任何人都可以從您的頁面抓取客戶端代碼並修改它來規避xml檢查。 – akonsu

+0

關於如何解決這個問題的任何想法? – ibininja

+0

除非S3允許您在自己的一邊運行代碼,您可以在其中檢查文件的內容,您可以發佈到自己的服務器並在那裏進行檢查,然後從服務器發佈到S3。 – akonsu

回答

1

如果您不想運行其他資源,可以通過運行Token Vending Machine來完成此操作。

這裏的要點是:

  • 你的令牌售賣機(TVM)運行爲減少特權用戶。
  • 您的客戶端代碼仍直接上傳到S3,但它需要聯繫您的TVM獲得暫時的,用戶特定的令牌來訪問你的水桶時
  • 的TVM用戶登錄調用Amazon Security Token Service創建臨時憑證您用戶訪問S3
  • 的S3 API使用臨時證書時,它發出請求上傳/下載
  • 您可以定義你的水桶polices來限制桶的地區每個用戶都可以訪問

一創造的簡單例子使用每個用戶訪問的「保管箱」式服務詳述於here

+0

將讀取您張貼的信息;將盡快回復您...謝謝 – ibininja