回答

5

是,否。既然你需要保護你的AWS祕密密鑰(黑客可以用它來濫用你的帳戶),你不能直接在JS中驗證請求。

雖然你可以在JS中創建一個實現,但它本質上是不安全的。實用的一些內部使用,它永遠不能安全地部署(因爲這會暴露你的祕密密鑰)。你可以做的是使用你的服務器來驗證對SimpleDB的請求,並讓JS執行到Amazon的實際請求。雖然這有點迂迴,但它會起作用。

缺點是你需要在客戶端做一堆處理。您也可能會獲取比您的應用程序消耗/輸出更多的數據,因此在客戶端而不是服務器上處理數據可能會遇到更多延遲,因爲您將更多數據傳輸給用戶並對其進行更慢的處理。

希望這有助於

+1

您現在可以(主要)安全地在客戶端執行此操作,而無需泄露密鑰。看到我的答案下面和我的相關答案http://stackoverflow.com/questions/4988367/anonymous-read-with-amazon-simpledb。您可以獲得99%的客戶端調用,剩下1%的服務器端小型安全組件。 – toolbear 2011-11-22 19:46:15

2

如果沒有,怎麼回事?

安全。您使用開發者帳戶向數據庫進行身份驗證。亞馬遜並不瞭解您的最終用戶(爲了直接從瀏覽器驗證訪問權限,它需要這麼做)。由應用程序代碼來決定允許哪些最終用戶執行哪些操作,以及不允許執行哪些操作。

也就是說,有Javascript Scratchpad for Amazon SimpleDB示例應用程序。它確實直接從瀏覽器訪問SimpleDB(你必須輸入你的AWS證書)。

+0

可能couchdb是我在找什麼? – JSNewbie 2010-08-24 05:54:52

+0

那麼,你仍然需要在瀏覽器之外的某個地方配置訪問權限(它不能被黑客攻擊)。 – Thilo 2010-08-24 05:57:43

+0

謝謝,像往常一樣,所有的答案都很好。 – JSNewbie 2010-08-24 06:03:47

1

SimeplDBAdmin是一種基於JavaScript/PHP接口:

http://awsninja.com/2010/07/08/simpledbadmin-a-phpmyadmin-like-interface-for-amazon-simpledb/

的PHP一邊是中繼腳本[relay.php]這將通過從JavaScript提出的請求客戶端並將它們發送到服務器,從服務器獲取響應並將其重新格式化爲客戶端。這是爲了輕鬆解決Javascript的跨域問題[如果Web客戶端已經下載了包含來自www.example.com的JavaScript代碼的網頁,它將只允許JavaScript默認連接回www.example.com] 。

其他所有內容,包括請求籤名,都由Javascript代碼完成。

另請注意,亞馬遜最近發佈了一個新的測試版服務,允許您在亞馬遜賬戶下設置子賬戶。 simpleDB保護非常基本[每個帳戶都可以打開或關閉],但由於它確實提供了一些有限的請求跟蹤形式,因此可以認爲使用Javascript併爲每個用戶提供自己的用戶標識和密鑰以進行請求籤名是更安全的。讓每個用戶使用SAME用戶名和證書當然是不安全的。

0

請參閱this answer以允許從不受信任的客戶端對SimpleDB進行安全,匿名,只讀訪問:anonymous read with amazon simpledb

從答案的一些變化:

  • 沒有設置訪問策略爲只讀。但是,它允許進行細粒度的控制,因此您可能仍希望限制允許的寫入類型
  • 不是匿名的。 AWS docs on token based authexample apps顯示並行路徑:匿名訪問或非匿名AWS /聯合訪問您的憑據,但不公開您的密鑰。
相關問題