Cla*_*u S 6 hash http-post authenticity integrity digital-signature
我有一个 API 端点,外部网站可以在其中提交 POST 请求。确保请求真实且不被篡改的最佳方法是什么,因此他们尊重完整性原则?
由于信用卡信息等数据没有价值,因此我不需要 HTTPS 集成。
我已经查看了 HMAC 和数字签名,我相信第二种选择会更好,但我不确定这是否可行?
同样,散列请求并在我的服务器上验证它就足够了吗?
小智 2
HMAC 和数字签名都提供完整性和身份验证:
主要区别 - HMAC 消息无法由第三方检查/验证,只有知道秘密的人才能验证/验证消息。数字签名消息具有公共证书,任何人都可以通过解密带有公钥的消息、计算哈希值并在特定的可信方检查公钥来检查消息所有者。
结论 - 如果您不需要任何人能够检查某些消息是否确实属于发件人,请使用 HMAC。
同样,对请求进行哈希处理并在我的服务器上验证它是否足够?
不可以。中间人可以修改您的消息并附加修改后的消息的哈希值。散列提供了完整性,这意味着消息修改也会改变散列,但黑客不必担心散列相等,因为他只是用内容和散列完全替换消息!HMAC 中的一些秘密用法可以防止此类消息替换:中间人仍然可以更改消息,但他无法重新计算哈希,因为他不知道秘密。