如何安全地使用REST并使用敏感数据?

时间:2010-03-23 22:01:29

标签: security rest

我们正在实施一项新的网络服务。 Web服务将是敏感数据的存储,并且有多个具有不同权限的用户类型。因此,某些用户类型无法访问(有些用户无法更改,等等)某些类型的数据。如何在REST中工作?我对REST很新,所以如果这听起来很吵,那就很抱歉。

3 个答案:

答案 0 :(得分:5)

您的第一步是以SSL的形式提供一些传输加密。这应该注意确保没有人在中间攻击,并且没有人在窥探数据。其次,您需要找出某种身份验证方法。一种流行的方法是创建一个登录服务,您向其发送用户名和密码,并返回某种有限的生命密钥。然后,您将此密钥与所有子请求一起发送,服务器会在返回任何数据之前对其进行验证。如果您有不同的用户级别,那么检查密钥还要检查给定用户是否应该能够访问该信息。

答案 1 :(得分:1)

无论您希望使用HTTPS.

加密它

客户端只需在每个请求中包含用户名和密码。

或者,您可以拥有一个对用户进行身份验证的登录请求,并在cookie中或作为响应的一部分返回会话状态令牌。

答案 2 :(得分:1)

正如第一张海报所述,它是一种流行的模式,为客户提供首先对您的系统进行身份验证的方法(谷歌为他们的许多api做这个)。其回复包括客户端的令牌,作为后续请求的参数。

e.g。使用用户名和(密码的MD5哈希值)将HTTP POST(通过SSL)发送到http://you/auth - 将其与您为其存储的密码的MD5进行比较。

使用您的身份验证令牌响应HTTP 200 OK以及邮件正文或标头。

与使用每个请求重新提交身份验证凭据相比,这有两个好处。令牌的处理开销减少(现在只是有效性检查 - 可能针对有效令牌的内存存储),而不是用户和密码的DB查找。您还可以减少凭据通过网络发送的次数(尽管由于SSL而加密)。

在资源端点上实现访问控制需要更多的工作,但基本上只是指定可以使用哪些令牌来对付哪些资源。这取决于您的方案。

希望这是有道理的,祝你好运。