有沒有辦法防止郵遞員或任何其他客戶端向 Spring Boot 應用程式發出多個請求?
我的意思是,我可以運行一個 for 回圈Ajax作為示例并向我的控制器發送大量請求。我該如何防止呢?
uj5u.com熱心網友回復:
實作這一目標的一種方法如下所示,
在spring boot專案中創建請求過濾器或攔截器,然后將請求IP地址保存在radis之類的快取服務器中一段預定義的時間。然后當請求到來時,從請求中提取IP地址并將其與快取中的值進行比較,如果該值存在,則可以在到達控制器之前將請求回傳給控制器,如果該IP地址沒有條目在 radis 中,您可以將該 IP 地址保存在 radis 中并將該請求決議到控制器
https://www.baeldung.com/spring-boot-add-filter
uj5u.com熱心網友回復:
通常我會使用以下策略來最小化前端向后端發送過多請求的影響:
在 UI 層,實作一些 UX,這將限制 Web 應用程式向后端發送許多請求(例如,在用戶提交表單后的幾秒鐘內禁用提交按鈕)。它只能處理普通人類用戶,但不能處理 api 用戶/機器人。但通常95%以上是普通用戶。
要處理機器人,請考慮使用一些CAPTCHA解決方案來提交表單。它主要用于識別請求是來自實際的機器人還是人類。
在后端 Web 層,實作某種限速功能,如果某個用戶/IP 地址/API 密鑰在一定時間內多次呼叫某個 API,則拒絕對該特定用戶或 IP 地址或 API 密鑰的請求。超過一定的門檻。一個簡單的開源速率限制器是彈性4j。有關在 spring-boot 應用程式中使用它的示例,請參閱this 。這篇文章在服務層應用了速率限制器,但我會在控制器層應用它。
uj5u.com熱心網友回復:
非常好的問題,您需要使用斷路器來處理。如果服務器關閉,它將允許您限制連接,并且在多次嘗試后它將不允許任何請求。使用回退方法會發生這種情況,該方法將立即回復客戶端,從而清除執行緒并使您的應用程式更快。
簽出我在 GitHub 中的實作
隨時在 GitHub 中添加反饋或評論
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/523394.html
標籤:春天弹簧靴弹簧MVC
上一篇:“”計算屬性vue/no-async-in-computed-propertiesVue3中的意外異步操作
下一篇:相同的前綴端點但兩個不同的控制器
