Spring Boot 2 с Bucket4j для предотвращения DDOS-атак - PullRequest
0 голосов
/ 28 апреля 2019

Я бы хотел предотвратить 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>

Чего мне не хватает, или я неправильно понял структуру? Спасибо за подсказки.

1 Ответ

0 голосов
/ 19 мая 2019

Я думаю, вам нужно изменить эту строку на:

bucket4j.filters[0].url = .*

Удачи!

...