You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何保护无需登录即可访问的公开API端点?(ReactJS+AWS架构)

针对无需登录的「联系我们」API端点(SET2)的保护方案及优化思路

一、SET2端点的有效保护方案

1. 验证码验证

  • 集成Google reCAPTCHA v3(无交互型)或v2(点击验证型),前端在提交表单时获取验证码响应令牌,随请求一起发送到Lambda。
  • Lambda中调用验证码验证接口,校验令牌合法性及分数(v3的话分数低于阈值直接拒绝),通过后再处理存储逻辑。
  • 也可以用AWS原生的Amazon CAPTCHA,与API Gateway集成更顺畅,无需依赖第三方服务。

2. 请求签名(基于AWS SigV4)

  • 利用AWS Cognito的未认证用户身份池,让前端无需登录就能获取临时AWS凭证(Access Key/Secret Key/Session Token)。
  • 前端使用AWS SDK的SigV4签名器,对请求的URL、参数、headers进行签名,然后发送到API Gateway。
  • 在API Gateway中启用SigV4认证,只有签名合法的请求才能通过,完全避免Origin/Referrer伪造的问题,同时确保请求来自你的合法前端应用。

3. IP限流与频率控制

  • 在API Gateway的Usage Plan中配置单IP的速率限制(比如每分钟最多5次请求)和并发限制,直接拦截批量恶意请求。
  • 或者在Lambda中维护一个DynamoDB表,记录每个IP的请求时间和次数,若短时间内请求超过阈值(比如1分钟内10次),直接返回拒绝响应,同时设置过期时间自动清理旧记录。

4. 表单反机器人策略

  • 添加蜜罐字段:在表单中加入一个隐藏的输入框(通过CSS设置display: none),正常用户看不到不会填写,机器人会自动填充,后端检测到该字段有值就直接拒绝请求。
  • 后端严格校验字段格式:比如邮箱格式、内容长度限制,过滤含恶意脚本(XSS)或SQL注入特征的内容,同时检查请求的Content-Type是否为预期的application/json或multipart/form-data。

二、「联系我们」页面的实现优化思路

1. 合并API资源,简化架构

  • 无需单独搭建一套API Gateway和Lambda(SET2),可以将联系表单的端点加入现有的SET1 API Gateway,通过API Gateway的资源级授权区分处理:
    • 原SET1端点继续使用Lambda授权器验证Auth0的Bearer Token。
    • 联系表单端点使用上述验证码+SigV4签名/限流的组合策略,实现差异化保护。
  • 这样能减少AWS资源的重复创建,降低维护成本。

2. 异步处理表单提交

  • 将表单提交请求先发送到AWS SQS队列,再由Lambda异步消费队列中的消息写入DynamoDB。
  • 前端只需收到SQS的入队成功响应即可,无需等待数据库写入完成,提升用户体验;同时能缓冲突发的提交请求,避免Lambda因并发过高被限流。

3. 前端增强体验与防护

  • 前端添加表单字段实时验证,减少无效请求发送到后端。
  • 提交按钮添加状态控制(比如点击后禁用并显示加载中),防止用户重复提交。

内容的提问来源于stack exchange,提问作者vpv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 00:49:58