防止公共服务的过度使用

本文关键字:公共服务 | 更新日期: 2023-09-27 18:17:53

我有一个web api 2,我想在azure-app-service上托管。该服务应该由javascript应用程序调用,因此据我所知,它必须向公众开放(对吗?)。

然而,如果我让它完全打开,它很容易受到DOS的攻击。最好的方法是什么?

我想到的第一件事是实现一个自定义IP过滤器,它保留最近x分钟的请求,并让少于y次的请求通过。

还有别的办法吗?有没有什么具体的方法可以在azure上做到这一点,而不需要编写代码?


这不是一个宽泛的问题!我想我的要求很清楚!我在Azure上有一个服务,我想防止它被过度使用。这个范围有多广?

防止公共服务的过度使用

如果它是一个公共API(即。(手机应用程序可以与之对话),它必须是……当然是公开的。:)

如果你的用户必须在使用你的API之前注册(或者如果这是一个选项),你可以使用API密钥。这并不能防止DoS,如果给客户端,也不是一种身份验证形式,但至少您可以快速撤销违规密钥,从而在一定程度上减轻DoS。

除此之外,您对DoS的主要关注是应用程序级别的DoS。您应该尽量避免对后端造成压力的API调用,限制响应大小(这可能意味着在客户端上进行分页)等。在你的API中完成这些事情后,让你的提供商处理网络级的事情。

默认情况下,azure服务受到DDOS,MITM攻击的保护,所有通信都通过https和加密。

就应用程序设计而言,您需要注意以下事项;SQL注入,会话劫持,跨站点脚本,应用级MITM和应用级DDoS。

进一步,你可以使用锡箔安全扫描测试对你的应用服务进行漏洞检查。https://azure.microsoft.com/en-us/blog/web-vulnerability-scanning-for-azure-app-service-powered-by-tinfoil-security/

同样使用azure API管理服务,您可以使用API网关来控制API调用,路由,强制使用配额,还可以根据API的流量进行节流。

https://azure.microsoft.com/en-in/documentation/articles/api-management-howto-product-with-rules/