diff --git a/fastbee-admin/src/main/resources/application-prod.yml b/fastbee-admin/src/main/resources/application-prod.yml index 7cf3f1de..1fda0c71 100644 --- a/fastbee-admin/src/main/resources/application-prod.yml +++ b/fastbee-admin/src/main/resources/application-prod.yml @@ -142,8 +142,8 @@ sip: # SIP安全防护配置 security: enabled: true # 是否启用安全防护 - rate-limit: 10 # 每分钟最大请求数(生产环境更严格) - block-threshold: 20 # 触发封禁的请求次数 + rate-limit: 5 # 每分钟最大请求数(生产环境更严格) + block-threshold: 10 # 触发封禁的请求次数 block-duration: 10080 # 封禁时长(分钟)一个星期 # 日志配置 diff --git a/fastbee-server/sip-server/src/main/java/com/fastbee/sip/service/impl/SipSecurityServiceImpl.java b/fastbee-server/sip-server/src/main/java/com/fastbee/sip/service/impl/SipSecurityServiceImpl.java index 45e7c678..0560fc90 100644 --- a/fastbee-server/sip-server/src/main/java/com/fastbee/sip/service/impl/SipSecurityServiceImpl.java +++ b/fastbee-server/sip-server/src/main/java/com/fastbee/sip/service/impl/SipSecurityServiceImpl.java @@ -62,13 +62,14 @@ public class SipSecurityServiceImpl implements ISipSecurityService { return true; } - // 2. 记录请求计数(1分钟窗口) + // 2. 记录请求计数(2分钟窗口) + // 2分钟5次请求之后就拒绝,10次请求后就封禁 String countKey = COUNT_PREFIX + ip; long count = redisCache.incr(countKey, 1); // 首次访问设置过期时间 if (count == 1) { - redisCache.expire(countKey, 60, TimeUnit.SECONDS); + redisCache.expire(countKey, 120, TimeUnit.SECONDS); } // 3. 检查是否超过速率限制