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

如何让AWS Amplify托管的Vue.js前端安全访问API Gateway?

仅允许Amplify前端访问API Gateway的解决方案

关于API Gateway API密钥的安全问题

  • 前端注入API密钥本质上不安全:不管是存在.env文件还是Amplify环境变量中,只要是前端代码能获取到的密钥,用户都可以通过浏览器开发者工具(网络面板、源码查看)拿到,不存在绝对安全的前端存储方式。
  • 若非要使用API密钥,必须配合请求来源限制:在API Gateway的资源策略里添加条件,仅允许来自你的Amplify应用域名(比如https://xxx.amplifyapp.com)的请求。就算密钥泄露,其他域名发起的请求也无法通过验证。
  • .env文件不够安全:Amplify部署时会把.env中的变量打包进前端代码,最终还是会暴露给客户端,只能作为临时过渡方案,不能依赖它作为核心安全措施。

API Gateway授权器是可行且更优的方案

完全可行,而且不需要额外添加中间后端,直接用API Gateway自带的授权器即可,两种常用类型:

  • Cognito用户池授权器:
    • 借助Amplify的Auth模块集成Cognito用户池,让前端用户先完成身份验证(比如邮箱/密码登录),Amplify会自动管理身份令牌。
    • 在API Gateway配置Cognito授权器,要求请求携带有效的ID令牌或访问令牌,只有通过Cognito验证的请求才能触发后续Lambda。
    • 这种方式不仅能限制你的应用访问,还能实现用户级别的权限控制,比如不同用户只能操作自己的数据。
  • Lambda自定义授权器:
    • 如果不需要用户登录,只想验证请求是否来自你的Amplify应用,可以自定义Lambda授权器:
      1. 在Lambda中校验请求的Referer或Origin头部是否为你的Amplify域名。
      2. 还可以配合签名验证:前端用Amplify环境变量生成请求签名,Lambda验证签名的有效性。
      3. API Gateway会先调用这个授权器,只有授权通过才会转发请求到业务Lambda。
    • 这种方式无需用户登录,仅验证请求来源的合法性,适合无用户身份要求的场景。

额外安全加固建议

  • 启用API Gateway的WAF(Web应用防火墙):添加IP黑名单、请求频率限制等规则,进一步阻止恶意请求。
  • Lambda中不要硬编码MongoDB凭证:把MongoDB连接字符串存放在AWS Secrets Manager中,Lambda运行时动态获取,避免凭证泄露。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 13:35:00