我有一个web api 2,我想在azure-app-service上托管。该服务应该由javascript应用程序调用,因为据我所知它必须向公众开放(对吧?)。
但是,如果我让它完全打开,它很容易受到DOS的影响。最好的方法是什么?
我想到的第一件事就是实现一个自定义IP过滤器,它可以保留最后x分钟的请求,并让那些少于y次的请求通过。
还有其他方法吗?有没有特定的方法在没有编写代码的情况下在azure上执行它?
这不是一个广泛的问题!我觉得很清楚我在问什么! 我在Azure上有一项服务,我想保护它免受过度使用。这有多广泛?!?!
答案 0 :(得分:1)
默认情况下,azure服务受到DDOS,MITM攻击的保护,所有通信都通过https和加密进行。
到目前为止应用程序设计需要注意以下事项; SQL注入,会话劫持,跨站点脚本,应用程序级MITM和应用程序级DDoS。
此外,您可以使用Tinfoil安全扫描测试对您的应用服务进行漏洞检查。 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/
答案 1 :(得分:1)
如果它是一个公共API(即移动应用程序会与之交谈的内容),那么它必须是......当然是公开的。 :)
如果您的用户在使用API之前必须注册(或者如果这是一个选项),您可以使用API密钥。这不会阻止DoS,并且如果给予客户端,则不是一种身份验证形式,但至少可以快速撤销违规密钥以减轻DoS。
除此之外,您对DoS的主要关注点是应用级别的DoS。您应该尝试避免API调用,这会对您的后端造成压力,限制响应大小(这可能意味着在客户端上进行分页)等等。在您的API中完成这些操作后,让您的提供商处理网络级别的事情。