2011-02-09 131 views
5

我們目前有一個基於SOAP的Web服務,我們內部的應用程序用它來驗證用戶。基本上,他們發送一個帶有用戶名和密碼的SOAP請求。 Web服務根據我們的數據存儲對其憑據進行身份驗證,並在身份驗證成功時返回用戶信息。 Web服務使用BASIC身份驗證和SSL進行保護。將敏感信息發送到REST服務

我們需要對此Web服務進行修改,並且我正在考慮將其重寫爲REST服務。過去我創建的REST服務相當簡單,並且不需要安全性。我從來沒有創建了用於敏感信息的REST服務,所以我有幾個問題/顧慮:

首先,是否有發送敏感查詢參數(用戶憑證)安全地REST服務的最佳做法?我仍然可以使用BASIC身份驗證和SSL。

其次,如果我將查詢發送到使用POST REST服務,它仍然被認爲REST風格,或者就是讓需要REST查詢?

+1

我建議你閱讀下面的StackOverflow Q&A上的同一主題:http://stackoverflow.com/questions/7551/best-practices-for-securing-a-rest-api-web-service – 2011-02-09 19:50:02

回答

3

您也可以對REST Web服務使用SSL和基本身份驗證。

HTTP GET通常用於數據檢索(查詢),但您也可以使用HTTP POST。如果您可以使用任何類型的HTTP緩存,GET特別有用。如果您需要傳輸大量數據來定義查詢,或者您的Web服務操作期望使用一些複雜的數據格式而不是簡單的參數,則POST是有用的。

0

從SOAP到REST正在向安全方向邁進一步。

至於最佳做法:

  • 不要推出自己的安全。使用framework或已經過同行評審和測試的現有庫。
  • 請勿傳遞未加密的靜態密鑰。如果您使用HTTP Basic並通過線路發送,請對其進行加密。
  • 理想情況下,使用基於散列的消息認證碼(HMAC),因爲它是最安全的。

Why REST security doesn't exist

+0

爲什麼REST安全性不存在 - 找不到頁面。 – 2017-12-05 01:10:19

1

而不是做通過REST認證,您也可以考慮聯網的身份驗證協議來在結合與Web服務中使用。像Kerberos和OAuth這樣的技術是爲這些用例設計的。

然而,爲了回答你的問題,:

  1. REST鼓勵您利用HTTP和相關協議,因此,使用SSL和基本身份驗證是比較合適的。

  2. REST鼓勵使用的不只是GET和POST,但即使是其他HTTP「動詞」,如PUT和DELETE。使用GET僅適用於冪等操作,無副作用。