防止公共服务过度使用

时间:2016-11-15 09:59:47

标签: c# security azure asp.net-web-api2 azure-web-app-service

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

但是,如果我让它完全打开,它很容易受到DOS的影响。最好的方法是什么?

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

还有其他方法吗?有没有特定的方法在没有编写代码的情况下在azure上执行它?

这不是一个广泛的问题!我觉得很清楚我在问什么! 我在Azure上有一项服务,我想保护它免受过度使用。这有多广泛?!?!

2 个答案:

答案 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中完成这些操作后,让您的提供商处理网络级别的事情。