Я бы хотел предотвратить DDOS-атаки на мое веб-приложение с весенней загрузкой 2, и я наткнулся на фреймворк bucket4j
( bucket4j-github ). Мое приложение будет работать на героку, и там они предложили это сделать ( Heroku-Link )
Пока все хорошо. Сейчас я пытаюсь реализовать bucket4j
, и после этого я ожидаю, что если я нажму F5
очень быстро и часто, что-то случится, произойдет ошибка или что-то в этом роде. Но он ведет себя так же, как и без bucket4j
фреймворка, на запрос был получен ответ.
Моя цель - ограничить ставку с ip. В настоящее время я только что попробовал с localhost.
Что у меня так далеко:
pom.xml
<dependency>
<groupId>com.giffing.bucket4j.spring.boot.starter</groupId>
<artifactId>bucket4j-spring-boot-starter</artifactId>
<version>0.1.15</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
<groupId>org.ehcache</groupId>
<artifactId>ehcache</artifactId>
</dependency>
<dependency><!-- Somehow I needed that since bucket4j-->
<groupId>javax.interceptor</groupId>
<artifactId>javax.interceptor-api</artifactId>
<version>1.2.2</version>
</dependency>
application.properties
# CACHE
spring.cache.jcache.config=classpath:ehcache.xml
# RATE LIMIT
bucket4j.enabled=true
bucket4j.filters[0].cache-name=buckets
bucket4j.filters[0].filter-method=servlet
bucket4j.filters[0].url=/*
bucket4j.filters[0].rate-limits[0].bandwidths[0].capacity=10
bucket4j.filters[0].rate-limits[0].bandwidths[0].time=1
bucket4j.filters[0].rate-limits[0].bandwidths[0].unit=minutes
bucket4j.filters[0].rate-limits[0].expression=getRemoteAddress()
bucket4j.filters[0].rate-limits[0].bandwidths[0].fixed-refill-interval=0
bucket4j.filters[0].rate-limits[0].bandwidths[0].fixed-refill-interval-unit=minutes
ehcache.xml
<config ... >
<cache alias="buckets">
<expiry><ttl unit="seconds">3600</ttl></expiry>
<heap unit="entries">1000000</heap>
</cache>
</config>
Чего мне не хватает, или я неправильно понял структуру? Спасибо за подсказки.