feat(stats): #337 봇 UA 필터 + IP 레이트리밋
- BotDetector 유틸 (Pattern.CASE_INSENSITIVE: bot|crawler|spider|slurp|scrap|fetch|monitor|preview|lighthouse) - RateLimitService: Redis SET NX EX(60s) 패턴으로 같은 IP 윈도우 차단 - Bucket4j 대신 spring-data-redis 기존 의존성 재사용 (간결) - Redis 다운 시 fail-open (사용자 경험 우선) - StatsController.recordVisit: HttpServletRequest 받아 UA + X-Forwarded-For 우선 IP - 봇/리밋 초과 → 200 + counted:false (사용자 페이지 로드 지장 X) - 통과 → 200 + counted:true → statsService.recordVisit() - application.yml: app.rate-limit.visit-window-seconds (env VISIT_WINDOW_SECONDS) 기본 60 - dev 검증: 봇 UA → counted=false, Mozilla → true, 즉시 재호출 → false 설계서: docs/design/337-stats-bot-ratelimit/README.md Refs: #337 (Developer 단계)
This commit is contained in:
@@ -32,6 +32,8 @@ dependencies {
|
||||
implementation 'net.javacrumbs.shedlock:shedlock-spring:5.16.0'
|
||||
implementation 'net.javacrumbs.shedlock:shedlock-provider-redis-spring:5.16.0'
|
||||
|
||||
// #337 — IP 레이트리밋은 Redis SET NX EX 패턴으로 자체 구현 (기존 spring-data-redis 활용)
|
||||
|
||||
// Oracle JDBC + Security (Wallet support for Oracle ADB)
|
||||
implementation 'com.oracle.database.jdbc:ojdbc11:23.7.0.25.01'
|
||||
implementation 'com.oracle.database.security:oraclepki:23.7.0.25.01'
|
||||
|
||||
Reference in New Issue
Block a user