首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Bucket4j防止DDOS攻击的Spring 2

使用Bucket4j防止DDOS攻击的Spring 2
EN

Stack Overflow用户
提问于 2019-04-28 13:30:35
回答 6查看 6.3K关注 0票数 5

我想防止DDOS攻击我的spring 2web应用程序,我遇到了框架bucket4j (桶4j-github)。我的应用程序将在heroku上运行,在那里他们建议这样做(Heroku-Link)

到目前一切尚好。我现在正在尝试实现bucket4j,我希望在那之后,如果我非常快和频繁地按F5,会发生一些事情,会发生错误或类似的事情。但是,如果没有bucket4j框架,它的行为就像它一样,请求都得到了响应。

我的目标是限制ip的速率。目前我只是尝试从本地主机。

到目前为止我所拥有的是:

pom.xml

代码语言:javascript
复制
    <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

代码语言:javascript
复制
# 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

代码语言:javascript
复制
<config ... >
    <cache alias="buckets">
        <expiry><ttl unit="seconds">3600</ttl></expiry>
        <heap unit="entries">1000000</heap>
    </cache>
</config>

我错过了什么,或者我没有意识到框架的存在?谢谢你的暗示。

EN

回答 6

Stack Overflow用户

发布于 2019-05-19 15:43:26

我认为您需要这一行更改为:

代码语言:javascript
复制
bucket4j.filters[0].url = .*

祝好运!

票数 0
EN

Stack Overflow用户

发布于 2019-07-27 20:44:49

在我的Spring配置中添加@EnableCaching并使用bucket4j.filters[0].url=.*就足以解决这个问题。

票数 0
EN

Stack Overflow用户

发布于 2020-03-09 11:09:45

确保maven正在导入依赖项。在pom.xml中添加版本号为我解决了这个问题:

代码语言:javascript
复制
    <dependency>
        <groupId>com.giffing.bucket4j.spring.boot.starter</groupId>
        <artifactId>bucket4j-spring-boot-starter</artifactId>
        <version>0.2.0</version>
    </dependency>

由于没有在pom.xml中添加版本号,maven没有导入依赖项。没有显示错误,但速率限制不起作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55890748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档