Eu uso o Amazon Simple Notification Service (Amazon SNS) para enviar notificações para um endpoint HTTPS ou HTTP. Quero verificar se as mensagens do Amazon SNS enviadas aos endpoints são autênticas para evitar ataques de falsificação.
Resolução
É uma prática recomendada usar a validação de assinatura baseada em certificados ao verificar a autenticidade de uma notificação do Amazon SNS. Para obter mais informações, consulte Verificação das assinaturas de mensagens do Amazon SNS.
Para ajudar a evitar ataques de falsificação ao verificar as assinaturas de mensagens do Amazon SNS, conclua as seguintes ações:
- Sempre use HTTPS para obter o certificado do Amazon SNS.
- Valide a autenticidade do certificado.
- Verifique se o Amazon SNS enviou o certificado.
- Use um dos AWS SDKs compatíveis com o Amazon SNS para validar e verificar mensagens quando possível.
Exemplo de corpo da mensagem
Veja a seguir um exemplo de string de carga útil de mensagem enviada pelo 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"}
}
}
Para obter mais informações, consulte Analisar formatos de mensagem do Amazon SNS.
Informações relacionadas
Fanout de notificações do Amazon SNS para endpoints HTTPS
Como faço para inscrever um endpoint HTTP ou HTTPS privado em um tópico do Amazon SNS?