首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止通过客户端Javascript调用API的滥用

防止通过客户端Javascript调用API的滥用
EN

Software Engineering用户
提问于 2018-06-18 14:02:07
回答 2查看 1.3K关注 0票数 2

我正在设置一个+ Lambda微服务,它将返回非敏感但特定于用户的data.This,这意味着来自服务的响应不能被缓存并提供给多个用户。

有一种可能性,即未经授权的第三方将攻击此服务,并导致资源使用激增。

为什么必须是客户端请求?

主网站上的页面通常是从CloudFront缓存和服务的,而不需要将每个请求发送到原始服务器,因此不可能为每个用户提供这个请求服务器端。

的想法我有过

  1. 需要使用API密钥来访问服务。这不太可能是神奇的子弹,因为即使通过调用单独的后端脚本来隐藏密钥本身,未经授权的用户所需要做的就是直接调用脚本而不是API,他们将得到相同的结果。
  2. 在从API发送有效的响应之前,添加基于头、源等的自定义检查--这些东西可以相对容易地被欺骗,因此它不一定能起作用,但它可能会阻止很多不那么有动力的人。

还有什么可以做的,以确保该服务仅供实际查看网站的人访问,而不是第三方应用程序?

EN

回答 2

Software Engineering用户

回答已采纳

发布于 2018-06-18 17:58:12

在这种情况下,我要添加各种限制费率的种类和组合,例如:

  • 允许完整API的每个间隔的最大请求
  • 如果您有某些“昂贵”的调用,则每个间隔对API特定部分的最大请求

如果您能够识别未经身份验证的呼叫,例如IP-Adress或Cookies之类的,您可能还可以进一步限制这一点,甚至更准确。例如:

  • 每个客户端每个完整API的最大请求
  • 每个客户端对API特定部分的最大请求

间隔可以是固定的或滑动的时间窗口中的任何东西,例如硬编码的5秒。

在一个项目中,我使用ip-adress和用户id(如果可用的话)的组合实现了类似的功能--保护服务不受匿名、可识别甚至正确授权的客户端的误用/攻击。

我使用了https://github.com/mokies/ratelimitj -自述文件也指出了一些背景文章,例如https://blog.figma.com/an-alternative-approach-to-rate-limiting-f8a06cf7c94c

票数 2
EN

Software Engineering用户

发布于 2018-12-11 07:58:34

在限制速率的情况下,我认为AWS网关已经建立了相应的机制,配置起来相对简单。(AWS API网关配额)

What Are Usage Plans and API Keys? A usage plan specifies who can access one or more deployed API stages and methods — and also how much and how fast they can access them. The plan uses API keys to identify API clients and meters access to the associated API stages for each key. It also lets you configure throttling limits and quota limits that are enforced on individual client API keys.

https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-api-usage-plans.html

在用户和机器人的上下文中,可以检查简单的登录服务,该服务可以与API网关集成:

https://aws.amazon.com/cognito/

票数 -1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/372726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档