代码之家  ›  专栏  ›  技术社区  ›  Lakshman Diwaakar

如何保护APIGateway生成的URL?

  •  2
  • Lakshman Diwaakar  · 技术社区  · 9 年前

    我有一个无服务器的后端,与 Architecture

    目前,任何拥有我的API网关URL的人都可以查询或修改数据。如何保护URL,以便只有客户端(react应用程序)可以访问它。所以,我担心的是,任何人都可以打开 选项卡,并获取我的APIGateway的URL,可以使用curl或postman。我想阻止这种情况。

    我脑海中的解决方案:

    1. 起源

    API网关 它本身我没有从AWS文档中获得正确的搜索词。我也想知道什么是最好的做法,以防止访问后端URL除了客户端(反应应用程序)

    谢谢阿山的回答。在我的情况下,我使用Auth0,所以自定义授权应该为我工作。我刚刚遇到这个 https://www.youtube.com/watch?v=n4hsWVXCuVI ,这基本上解释了APIGateway可能实现的所有授权和身份验证。我知道身份验证可以通过Cognito/Auth0实现,但我有一些简单的网站,它们有表单,其后端由APIGateway处理。我可以防止滥用使用验证码抓取机器人,但一旦攻击者获得URL、头和请求参数,他就可以调用这一百万次。我们可以做的一件事是 API密钥 ,但它是一个没有过期的静态字符串。一旦头球出现在他身上,他就可以滥用头球。那么,任何想法,如何防止这在APIGateway。如果没有任何其他服务以外的AWS,我可以寻找?如果我能得到答案,我会很高兴的。

    1 回复  |  直到 9 年前
        1
  •  2
  •   Ashan    9 年前

    目前API网关不支持私有URL,因此它将公开可用。

    如果您使用自己的身份验证机制,那么可以编写一个单独的Lambda函数来验证令牌。可以在API网关上使用http侦听器名称指定此Lambda函数名,以访问自定义令牌来验证请求。

    为了控制授权用户的API使用,使用API密钥是目前AWS特有的唯一方法。

    由于您将S3用于react应用程序托管,因此可以通过使用 AWS WAF CloudFront位于应用程序堆栈的前面。API密钥可以添加到CloudFront头以转发到您的APIGateway源站,并且由于CloudFront和APIgatuate通信使用SSL进行,因此几乎不可能有人找到API密钥。使用AWS WAF可以限制常见攻击的恶意访问。这包括基于速率的阻塞,以限制用户重复调用API。

    推荐文章