验证 Amazon SNS 消息签名
Amazon SNS 使用消息签名来确认发送到您的 HTTP 端点的消息的真实性。为确保消息完整性并防止欺骗,您必须在处理任何 Amazon SNS 消息之前验证签名。
什么时候应该验证 Amazon SNS 签名?
在以下情况下,您应该验证 Amazon SNS 消息签名:
-
Amazon SNS 将通知消息发送到您的 HTTP(S) 端点时。
-
当 Amazon SNS 在
Subscribe或UnsubscribeAPI 调用后向您的端点发送确认消息时。
Amazon SNS 支持两种消息签名版本:
-
SignatureVersion1 – 使用消息的 SHA1 哈希值。
-
SignatureVersion2 – 使用消息的 SHA256 哈希值。这提供了更强的安全性,推荐使用该选项。
要正确验证 SNS 消息签名,请遵循以下最佳实践:
-
请务必使用 HTTPS 检索签名证书,以防止未经授权的拦截攻击。
-
检查证书是否由 Amazon SNS 签发。
-
确认证书的信任链有效。
-
证书应来自 SNS 签名的 URL。
-
未经验证,请勿信任消息中提供的任何证书。
-
拒绝任何带有意外
TopicArn的消息,以防止欺骗。 -
适用于 Amazon SNS 的 Amazon 软件开发工具包提供了内置的验证逻辑,从而降低了错误实施的风险。