防止公共服务的过度使用
本文关键字:公共服务 | 更新日期: 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/