如何保护AWS API网关URL免受未经授权的访问?

Aru*_*mar 5 amazon-s3 amazon-web-services aws-lambda aws-api-gateway

我想在 AWS S3 中托管我的静态网站。但它包含用于发送电子邮件的“联系我们”页面。当用户点击提交按钮时,它将请求发送到AWS API网关,API网关触发lambda函数;lambda 函数将邮件发送给管理员。

但它有一些问题。当我们在服务器上托管网站时,我们可以使用验证码来防止提交请求自动化和欺诈活动。在这种情况下,任何知道的人都可以滥用(通过在 URL 中传递查询字符串来发送更多请求)我的 API 网关 URL。

所以我的问题是如何知道提交请求仅是从我的网站请求的有什么方法可以使用而不是验证码

Ani*_*kur 0

谷歌的 reCAPTCHA 看起来集成起来相当简单 -

https://developers.google.com/recaptcha/intro 分为 -

  1. 使用验证码验证用户(https://developers.google.com/recaptcha/docs/display
  2. 验证响应(https://developers.google.com/recaptcha/docs/verify

这可以通过 API 网关端点和 lambda 轻松实现(您的秘密将位于 lambda 中 [可能作为环境变量],站点密钥将位于 s3 静态站点中)

无论如何,为什么不设计自己的验证机制(如果你真的想自己做事:))?在让用户提交之前(或提交时......)询问用户电话号码。然后调用 API 网关端点,该端点获取此号码并通过 SNS 发送 otp。一旦用户验证了此 otp(另一个 api 网关调用),则仅发送管理员电子邮件(进行进一步处理)。您可以将此 otp 存储为带有经过验证的布尔标志的一些 rds。您不必担心这些 API 网关端点,因为它们实际上仅用于身份验证,并且会随着云前端自动扩展。