2016-11-15 61 views
0

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

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

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

有没有其他办法?没有任何具体的方法可以在没有编写代码的情况下在Azure上执行它?


这不是一个大问题!我想这很清楚我在问什么! 我在Azure上有一项服务,我希望保护它免于过度使用。这有多广?!?!

+0

云or或类似的服务? – 4c74356b41

+0

@ 4c74356b41抱歉,我没有得到您的问题 –

回答

1

如果它是一个公共的API(即一些移动应用会说话),它必须是..嗯,当然是公众。 :)

如果您的用户在使用API​​之前必须注册(或者这是一个选项),则可以使用API​​密钥。这并不妨碍DoS,并且如果授予客户端,则不是一种身份验证形式,但至少您可以快速撤销违规密钥以稍微缓解DoS。

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

+0

感谢您的回答。我想用我的服务作为注册服务,所以如果你注册,你会收到一封电子邮件。现在,一个人可以在一天内使用我的服务数千​​次,并且我最终会得到一个充满不需要的数据的数据库,以及已被归类为垃圾邮件创建者的电子邮件服务器 –

+1

您可以对您的注册进行费率限制针对特定客户端IP的行为,而不是让其过于频繁地注册。这也取决于典型的客户是否在NAT(典型的公司用户)之后(典型的家庭用户)。您在发送的电子邮件中也不应该有任何用户内容,因此使用其他人的电子邮件地址注册的用处不大。你不应该发送太多的电子邮件到同一个地址。这些可能有助于缓解你所描述的风险(这是非常有效的顺便说一句)。 –

+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/

+0

感谢您的回复,我正试图在我的天蓝色门户上设置速率限制。但在这里它说我需要支付50美元的API管理服务(开发人员)和700美元的标准,这比我的生产环境贵10倍:(我在正确的地方吗?有没有更便宜的选择? –

+0

是的,就是这样的速度,或者你可以尝试其他api管理产品,如3scale,app42等可能是他们更便宜,但不能确定天蓝色的整合 – Aravind