![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
braum源码分析
是一个程序狂人
这个作者很懒,什么都没留下…
展开
-
braum源码分析(一)-环境配置
##开始 本次需要阅读的源码是braum-spring-boot-starter,官方介绍如下: Braum可以很方便的帮助开发人员过滤、识别恶意请求。 源码不多,先说说源码环境设置。 ##导入代码 可以用git从https://gitee.com/yadong.zhang/braum-spring-boot-starter下载源码。 下载之后导入Idea里面。 ##源码包结构 package ...原创 2019-08-10 17:39:57 · 332 阅读 · 0 评论 -
braum源码分析(二)-EnableBraumConfiguration的实现
开始 本篇开始分析EnableBraumConfiguration @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface EnableBraumConfiguration { } 对应的autoconfiguration是BraumAutoConfigurati...原创 2019-08-10 18:03:02 · 410 阅读 · 0 评论 -
braum源码分析(三)-cache的两种实现
开始 本篇开始分析package cache。 cacheObj cacheObj用来记录访问数据,有2个属性,其中value用来存储单位时间(某个时间窗口,可以自定义时长)内ip访问次数,expire表示从第一次请求开始到时间窗口结束的时间戳。 例如,第一次访问,value=1,expire=当前时间戳+时间窗口长度,也就是期满时间。 存储的数据结构为: private static fina...原创 2019-08-10 22:09:51 · 142 阅读 · 0 评论 -
braum源码分析(四)-Braum的属性配置及其他
开始 本篇主要分析braum的属性配置BraumProperties。 BraumProperties BraumProperties的属性配置都在braum.limit.access下面。主要有 /** * 连续访问最高阀值,超过该值则认定为恶意操作的IP * 单位:次 默认为20 */ private int threshold = 20; ...原创 2019-08-10 22:52:30 · 345 阅读 · 0 评论 -
braum源码分析(五)-braum核心BraumProcessor
开始 本篇分析braum的核心process处理流程。这里实现在BraumShieldProcessor里面。 缓存的3种key 正常key,通过调用formatKey生成。 限制key,在正常key的基础上,增加braum_前缀。 黑名单key,在正常key的基础上,增加braum_blacklist_前缀。 限制访问的条件判断(三个条件) 是否要长期禁止,长期禁止的条件是拉黑次数大于定义的f...原创 2019-08-10 23:32:25 · 431 阅读 · 0 评论