2011-06-15 54 views
3

我正在構建一個面向公衆的REST應用程序供客戶端訪問。在試圖爲其開發安全性時,我查看了AWS在發送到AWS服務器之前如何使用訪問密鑰和密鑰對消息進行簽名以處理其REST身份驗證。所以我編寫了一個用Jersey,JSP和javascript(jsonp)測試的例子,它似乎工作正常。Jersey Web Services安全問題

1.)在頁面加載時,JSP將客戶端的訪問密鑰和日期/時間(轉換爲EPOCH)並寫入頁面。它還將這兩部分信息通過HMAC-SHA1與客戶端的唯一密鑰相結合。

2.)當我執行JQuery ajax請求時,我傳遞了所有三條信息。

  1. 用戶訪問關鍵
  2. 日期/時間(EPOCH)
  3. 簽名的消息

3)在新澤西一側我把快捷鍵和日期/時間,然後檢查數據庫用戶密鑰。然後我執行我自己的HMAC-SHA1簽名,並將其與用戶提交的簽名消息中的簽名消息進行比較。如果它們匹配,則允許它們使用我們的Web服務。我也檢查日期/時間,只接受過去15分鐘內簽名的消息。

我的問題是,這足夠安全嗎?

回答

0

這不是一個完整的答案,但我沒有要點評論。我會在服務器端爲你的安全增加一個salt。請參閱this article以獲得有關使用主密鑰和鹽進行哈希的良好討論。

+0

從這篇文章看來,我沒有做的唯一的事情就是不止一次地迭代我的散列函數。這是一個很好的閱讀。謝謝。 – Goldfinger 2011-06-16 14:12:17

+0

沒問題。我相信你應該迭代以減緩蠻力攻擊,但限制不良登錄嘗試是一個簡單的方法。這是一次關於在會議上看到的密碼(以及一般安全性)的演講,演講者的名字是Bill Cheswick,以及相當有趣的東西。看看這個鏈接下的重新思考密碼的鏈接,他的演講鏈接:[鏈接](http://www.cheswick.com/ches/speakerinfo.html) – oberger 2011-06-16 14:47:27