2016-11-15 84 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