我目前正在使用 SendGrid 的入站解析 Webhook 将电子邮件发送到我的应用程序。我已经能够通过将 URL 指向我的应用程序公开的端点来使其工作。 SendGrid 只是以 JSON 格式 HTTP POST 请求的形式将电子邮件发送到此端点,我只是在内部处理每个请求。
我的问题是,现在我已经可以使用它了,如何确保只有 SendGrid 可以使用此端点?目前,任何人都可以利用此 HTTP POST 端点并假装电子邮件已发送到应用程序。
我可以让 SendGrid 发送某种唯一密钥来识别自己的身份吗?有没有办法可以通过ip地址来限制?
有两种方法可以保护您的端点。 SendGrid 的 webhooks 支持基本身份验证(例如
https://user:[email protected]/endpoint
)。您还可以实现一个唯一的密钥,在根据请求采取行动之前检查该密钥(例如 https://example.com/endpoint?key=123
)。
然而,简单的答案是,您添加到 URL 的任何内容都可以充当 SendGrid 的唯一身份验证。
Sendgrid 支持建议使用反向 DNS 查找并确保生成的主机名属于 sendgrid.net。他们显然没有针对这些 webhook 的内置安全功能。