2011-06-20 91 views
3

感謝您的閱讀。使用jQuery前端的REST Web服務安全性

我想開發一個安全的Web應用程序,使用jQuery作爲前端,.NET MVC作爲服務器端,其功能用RESTful Web服務表示。在這一點上,我試圖設想我將使用的安全方案,但我想要一些關於最佳實踐的建議(顯然我將使用https/ssl,但當然還有更多)。

我一直都是祕密鑰匙方法的粉絲,所以我試圖弄清楚如何在這種類型的Web應用程序架構中使用它,但我很茫然。基本上,一個祕密密鑰將被生成並放置在服務器以及給予客戶端(因此密鑰絕不會通過線路發送),並且每個客戶端請求必須用此密鑰進行數字「簽名」。這是您通常在Web應用中看到的典型用戶名/密碼/會話ID結構的補充。

我的問題是密鑰在客戶端上的實際存儲。由於jQuery文件只是坐在服務器上的.html文件,因此無法訪問虛擬Web目錄之外的目錄中的密鑰文件。將密鑰文件放在公共網站上並不會帶來太多祕密。 :)

這是我怎麼會喜歡工作:

  1. 在一定的時間間隔(5-15分鐘),後端工藝生成私鑰,並把它無論是在後端數據庫以及Web服務器上非公開位置的文件。
  2. 當客戶端發出請求時,它會從密鑰文件中讀取數據,然後用密鑰對請求進行數字簽名。
  3. 服務器接收到請求並使用密鑰進行解碼。

但顯然#2是問題,因爲沒有辦法通過JavaScript訪問「祕密」(即非公共)文件。

我是不是太偏執?祕密密鑰方法很好,因爲它具有超出用戶名/密碼的另一級別的安全性(攻擊者需要密鑰和有效的用戶名/密碼),並且如果每5分鐘重新生成一次密鑰,那麼風險將會降低祕密密鑰會泄漏。這也確保了所有請求都來自「經過認證」的客戶端。但我不明白如何使用諸如html/jQuery之類的非編譯代碼。

有沒有人有任何關於REST風格的Web服務安全方法的建議或文章?

謝謝:)

文斯

回答

2

如果您還沒有準備好,我建議你在OAuth 1.02.0一些閱讀。它們都被更大的API使用,比如Facebook,Netflix,Twitter等等。 2.0仍在草案中,但這並沒有阻止任何人實施它並使用它,因爲它對於客戶來說更簡單。這聽起來像你想要更復雜和更安全的東西,所以你可能要專注於1.0。

我總是發現Netflix的Authentication Overview是客戶的一個很好的解釋。

而且一個快速的谷歌搜索給出了這篇文章:How-to: Secure OAuth in JavaScript