我正在设计一个 REST 服务,该服务需要很好地防止未经授权的访问。我正在考虑需要一个通过散列所有请求参数以及带有 sha-256 的密钥生成的安全摘要,并使该服务仅通过 https 可用。谁能告诉我这是否足够安全?
问问题
304 次
1 回答
0
首先,确保您使用的是 en HMAC,而不是普通的 SHA-256 来生成“安全摘要”。
接下来,您将在此摘要的输入中添加什么?您至少需要方法、URI、有效负载,以及很可能大多数请求标头(有许多标头会影响 HTTP 请求的含义,这些标头在 REST 上下文中很重要)。这可能很困难,具体取决于您使用的 HTTP 客户端,因为客户端可能会以您无法直接控制的方式设置或更改标头。
最后,你要把这个摘要放在哪里?自定义标头(例如X-Request-Authenticator
)似乎是明智的,或者如果客户端在 Web 浏览器中运行,则可能是 cookie。
如果可以的话,我会建议使用现有的工具,而不是自己创建一些东西。使用 SSL 已经为您提供了消息完整性保护,所以从它开始。然后,如果您只需要简单的访问控制,HTTP 基本身份验证可以很好地处理 REST 请求。或者您可以让客户出示证书并进行验证。
于 2012-03-08T17:00:05.340 回答