如何验证发送到 HTTP 和 HTTPS 端点的 Amazon SNS 消息的真实性?

1 分钟阅读
0

我正在使用 Amazon Simple Notification Service (Amazon SNS) 向 HTTPS 或 HTTP 端点发送通知。我想防止欺骗攻击,那么如何验证端点收到的 Amazon SNS 消息的真实性?

解决方法

最佳实践是在验证 Amazon SNS 通知的真实性时使用基于证书的签名验证。有关说明,请参阅 Amazon SNS 开发人员指南中的验证 Amazon SNS 消息的签名

为了帮助防止欺骗攻击,请确保在验证 Amazon SNS 消息签名时执行以下操作:

消息正文示例

以下是从 Amazon SNS 发送的示例消息负载字符串:

{
"Type" : "Notification",
"MessageId" : "e1f2a232-e8ce-5f0a-b5d3-fbebXXXXXXXX",
"TopicArn" : "arn:aws:sns:us-east-1:XXXXXXXX:SNSHTTPSTEST",
"Subject" : "Test",
"Message" : "TestHTTPS",
"Timestamp" : "2021-10-07T18:55:19.793Z",
"SignatureVersion" : "1",
"Signature" : "VetoDxbYMh0Ii/87swLEGZt6FB0ZzGRjlW5BiVmKK1OLiV8B8NaVlADa6ThbWd1s89A4WX1WQwJMayucR8oYzEcWEH6//VxXCMQxWD80rG/NrxLeoyas4IHXhneiqBglLXh/R9nDZcMAmjPETOW61N8AnLh7nQ27O8Z+HCwY1wjxiShwElH5/+2cZvwCoD+oka3Gweu2tQyZAA9ergdJmXA9ukVnfieEEinhb8wuaemihvKLwGOTVoW/9IRMnixrDsOYOzFt+PXYuKQ6KGXpzV8U/fuJDsWiFa/lPHWw9pqfeA8lqUJwrgdbBS9vjOJIL+u2c49kzlei8zCelK3n7w==",
"SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-7ff5318490ec183fbaddaa2aXXXXXXXX.pem",
"UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:XXXXXXXX:SNSHTTPSTEST:b5ab2db8-7775-4852-bd1a-2520XXXXXXXX",
"MessageAttributes" : {
"surname" : {"Type":"String","Value":"SNSHTTPSTest"}
}
}

有关 Amazon SNS 使用的消息格式的更多信息,请参阅解析消息格式


相关信息

扇出到 HTTP/S 端点

将 AWS Lambda 与 Amazon SNS 结合使用

Amazon SNS IP 地址范围是多少?

AWS 官方
AWS 官方已更新 1 年前