第一种情况需要为每个通信生成一个HMAC来识别请求,这样服务器就可以重新生成它以确保客户端被授权(因为HMAC是使用只有服务器和客户端知道的私钥加密的),而第二种情况只需要服务发出证书(或令牌)一次,并保持其有效一段时间 -例如15分钟。当然,为了防止中间人攻击或重放攻击,它必须只通过SSL发送,具有所有相关后果(更多带宽和更多CPU要求)。
个人认为第一种不仅更简单,而且更强大,因为每个请求都有其自己独特的数据,而第二种则依赖于SSL证书的完整性(我并不是说签名的SSL证书很容易破解,但如果有人破解了它,所有通信都将被嗅探)。
所以我认为它们具有以下优缺点:
- HMAC优点:每个请求都有唯一的令牌,可以通过使用唯一数据组成签名和时间戳来真正安全地防止MITM和Replay攻击,易于实现 - HMAC缺点:需要服务器为每个单独的请求重新生成令牌 - 令牌优点:多个请求只需要一个令牌,在需要多个客户端操作的服务上很有用 - 令牌缺点:所有通信都需要SSL。
我认为我需要设置一些测试来得出最终答案,但我很想听听是否有人已经有了一些基于旧经验的知识或想法。
个人认为第一种不仅更简单,而且更强大,因为每个请求都有其自己独特的数据,而第二种则依赖于SSL证书的完整性(我并不是说签名的SSL证书很容易破解,但如果有人破解了它,所有通信都将被嗅探)。
所以我认为它们具有以下优缺点:
- HMAC优点:每个请求都有唯一的令牌,可以通过使用唯一数据组成签名和时间戳来真正安全地防止MITM和Replay攻击,易于实现 - HMAC缺点:需要服务器为每个单独的请求重新生成令牌 - 令牌优点:多个请求只需要一个令牌,在需要多个客户端操作的服务上很有用 - 令牌缺点:所有通信都需要SSL。
我认为我需要设置一些测试来得出最终答案,但我很想听听是否有人已经有了一些基于旧经验的知识或想法。