将敏感信息发送到REST服务

时间:2011-02-09 19:07:16

标签: web-services security rest

我们目前有一个基于SOAP的Web服务,我们的内部应用程序使用它来验证用户身份。基本上,他们使用用户名和密码发送SOAP请求。 Web服务针对我们的数据存储验证其凭据,并在验证成功时返回用户信息。使用BASIC身份验证和SSL保护Web服务。

我们需要对此Web服务进行修改,我正在考虑将其重新编写为REST服务。我过去创建的REST服务非常简单,不需要安全性。我从未创建过使用敏感信息的REST服务,因此我有几个问题/疑虑:

首先,是否有安全地将敏感查询参数(用户凭据)发送到REST服务的最佳做法?我仍然可以使用BASIC身份验证和SSL。

其次,如果我使用POST向REST服务发送查询,它仍然被认为是RESTful,还是REST查询需要GET?

3 个答案:

答案 0 :(得分:3)

您也可以将SSL和基本身份验证与REST Web服务一起使用。

HTTP GET通常用于数据检索(查询),但您也可以使用HTTP POST。如果您可以使用任何类型的HTTP缓存,GET特别有用。如果您需要传输大量数据来定义查询,或者您的Web服务操作需要一些复杂的数据格式而不是简单的参数,那么POST很有用。

答案 1 :(得分:1)

除了通过REST进行身份验证之外,您还可以考虑在连接中使用网络身份验证协议与Web服务。像Kerberos和OAuth这样的技术是为这些用例而设计的。

回答你的问题:

  1. REST鼓励您利用HTTP和相关协议,因此使用SSL和BASIC身份验证非常合适。

  2. REST鼓励不仅使用GET和POST,还使用其他HTTP“动词”,如PUT和DELETE。仅对没有副作用的幂等操作使用GET。

答案 2 :(得分:0)

就安全性而言,从SOAP到REST正在向后退一步。

就最佳做法而言:

  • 不要自己动手。使用经过同行评审和测试的framework或现有库。
  • 不传递未加密的静态密钥。如果您正在使用HTTP Basic并通过网络发送它,请对其进行加密。
  • 理想情况下,使用基于散列的消息身份验证代码(HMAC),因为它是最安全的。

Why REST security doesn't exist