代码拉取完成,页面将自动刷新
Braum 是一款web防护工具
braum可以很方便的帮助开发人员识别恶意请求
“有Braum在你们会很安全~”
中文文档| 英文文档
2018-10-26 17:23 突然想开发一个Braum
2018-10-31 18:29
2018-10-31 19:23
2018-11-04 20:36
<dependency>
<groupId>me.zhyd.braum.spring.boot</groupId>
<artifactId>braum-spring-boot-starter</artifactId>
<version>1.0.0-alpha</version>
</dependency>
# 连续访问最高阀值,超过该值则认定为恶意操作的IP。单位:次 默认为20
braum.limit.access.threshold=20
# 间隔时间,在该时间内如果访问次数大于阀值,则记录为恶意IP,否则视为正常访问。单位:毫秒(ms),默认为 5秒
braum.limit.access.interval=5000
# 当检测到恶意访问时,对恶意访问的ip进行限制的时间。单位:毫秒(ms),默认为 1分钟
braum.limit.access.limitedTime=60000
# 黑名单存在的时间,在单位时间内用户访问受限的次数累加。单位:毫秒(ms),默认为 1个月
braum.limit.access.blacklistTime=2592000000
# 缓存类型,默认为map存储,可选值(map、redis)
braum.limit.access.type=map
在启动类上添加@EnableBraumConfiguration
注解
@SpringBootApplication
@EnableBraumConfiguration
public class BraumApplication {
public static void main(String[] args) {
SpringApplication.run(BraumApplication.class, args);
}
}
{
"code": 1,
"msg": "[0:0:0:0:0:0:0:1]在5000毫秒内已连续发起 6 次请求",
"expire": 0,
"limitCount": 0,
"accessInfo": {
"ip": "0:0:0:0:0:0:0:1",
"ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/69.0.3497.100 Safari/537.36",
"referer": "http://localhost:8080/",
"requestUrl": "http://localhost:8080/",
"params": ""
}
}
{
"code": 0,
"msg": "[0:0:0:0:0:0:0:1]涉嫌恶意访问已被临时限制!共被限制过[3]次,本次剩余限制时间:59312 ms",
"expire": 59312,
"limitCount": 3,
"accessInfo": {
"ip": "0:0:0:0:0:0:0:1",
"ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/69.0.3497.100 Safari/537.36",
"referer": "http://localhost:8080/",
"requestUrl": "http://localhost:8080/",
"params": ""
}
}
字段 | 释义 |
---|---|
code | 响应码(1:正常,0:受限制) |
msg | 返回内容 |
expire | 当请求被限制时该值不为0,表示为被限制的剩余时间,单位毫秒 |
limitCount | 当请求被限制时该值不为0,表示为被限制的次数 |
accessInfo | 本次发起请求的内容 |
accessInfo
字段字段 | 释义 |
---|---|
ip | 当前访问IP |
ua | 当前用户的UA |
referer | 请求来源 |
requestUrl | 当前请求的地址 |
params | 当前请求的参数 |
修改配置文件
# 阀值
braum.limit.access.threshold=2
# 间隔时间
braum.limit.access.interval=2000
# 单次限制的时间
braum.limit.access.limited-time=3000
@RestController
public class BraumController {
@Autowired
BraumProcessor processor;
@Autowired
HttpServletRequest request;
@RequestMapping("/")
public Object index() {
BraumResponse r = processor.process(request);
if (r.getCode() == CommonConst.ERROR) {
return "你已涉嫌恶意访问被临时禁止,请文明上网";
}
return "Hello world!";
}
}
拦截器
@Component
public class BraumIntercepter implements HandlerInterceptor {
private static final Logger log = LoggerFactory.getLogger(BraumIntercepter.class);
private static final int SUCCESS = 1;
private static List<String> msgList = new ArrayList<>();
static {
msgList.add("Wow...您太冲动了,先喝杯咖啡冷静下。");
msgList.add("Wow...一杯不够?那再来一杯。");
msgList.add("还不够?再来一杯!");
msgList.add("你就不怕被撑死么?");
msgList.add("古恩吧,不接你这种客了");
msgList.add("古恩!");
}
@Autowired
private BraumProcessor processor;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
BraumResponse r = processor.process(request);
if (r.getCode() == SUCCESS) {
return true;
}
String msg = r.getLimitCount() > msgList.size() ? msgList.get(msgList.size() - 1) : msgList.get(r.getLimitCount() - 1);
log.info(msg);
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=utf-8");
PrintWriter writer = response.getWriter();
writer.write(msg);
writer.flush();
writer.close();
return false;
}
}
访问测试
2018-11-05 17:39:09.839 DEBUG 18020 --- [nio-8080-exec-3] m.z.b.spring.boot.BraumShieldProcessor : [127.0.0.1]在2000毫秒内已连续发起 1 次请求
2018-11-05 17:39:10.633 DEBUG 18020 --- [nio-8080-exec-6] m.z.b.spring.boot.BraumShieldProcessor : [127.0.0.1]在2000毫秒内已连续发起 2 次请求
2018-11-05 17:39:11.292 DEBUG 18020 --- [nio-8080-exec-8] m.z.b.spring.boot.BraumShieldProcessor : [127.0.0.1]涉嫌恶意访问已被临时限制!共被限制过[1]次,本次剩余限制时间:3000 ms
2018-11-05 17:39:11.292 INFO 18020 --- [nio-8080-exec-8] com.example.demo.BraumIntercepter : Wow...您太冲动了,先喝杯咖啡冷静下。
2018-11-05 17:39:19.573 DEBUG 18020 --- [io-8080-exec-10] m.z.b.spring.boot.BraumShieldProcessor : [127.0.0.1]在2000毫秒内已连续发起 1 次请求
2018-11-05 17:39:20.155 DEBUG 18020 --- [nio-8080-exec-2] m.z.b.spring.boot.BraumShieldProcessor : [127.0.0.1]在2000毫秒内已连续发起 2 次请求
2018-11-05 17:39:20.704 DEBUG 18020 --- [nio-8080-exec-4] m.z.b.spring.boot.BraumShieldProcessor : [127.0.0.1]涉嫌恶意访问已被临时限制!共被限制过[2]次,本次剩余限制时间:3000 ms
2018-11-05 17:39:20.705 INFO 18020 --- [nio-8080-exec-4] com.example.demo.BraumIntercepter : Wow...一杯不够?那再来一杯。
2018-11-05 17:39:28.242 DEBUG 18020 --- [nio-8080-exec-7] m.z.b.spring.boot.BraumShieldProcessor : [127.0.0.1]在2000毫秒内已连续发起 1 次请求
2018-11-05 17:39:28.854 DEBUG 18020 --- [nio-8080-exec-9] m.z.b.spring.boot.BraumShieldProcessor : [127.0.0.1]在2000毫秒内已连续发起 2 次请求
2018-11-05 17:39:29.332 DEBUG 18020 --- [nio-8080-exec-1] m.z.b.spring.boot.BraumShieldProcessor : [127.0.0.1]涉嫌恶意访问已被临时限制!共被限制过[3]次,本次剩余限制时间:3000 ms
2018-11-05 17:39:29.332 INFO 18020 --- [nio-8080-exec-1] com.example.demo.BraumIntercepter : 还不够?再来一杯!
2018-11-05 17:39:36.332 DEBUG 18020 --- [nio-8080-exec-3] m.z.b.spring.boot.BraumShieldProcessor : [127.0.0.1]在2000毫秒内已连续发起 1 次请求
2018-11-05 17:39:36.855 DEBUG 18020 --- [nio-8080-exec-6] m.z.b.spring.boot.BraumShieldProcessor : [127.0.0.1]在2000毫秒内已连续发起 2 次请求
2018-11-05 17:39:37.354 DEBUG 18020 --- [nio-8080-exec-7] m.z.b.spring.boot.BraumShieldProcessor : [127.0.0.1]涉嫌恶意访问已被临时限制!共被限制过[4]次,本次剩余限制时间:3000 ms
2018-11-05 17:39:37.354 INFO 18020 --- [nio-8080-exec-7] com.example.demo.BraumIntercepter : 你就不怕被撑死么?
2018-11-05 17:39:43.572 DEBUG 18020 --- [io-8080-exec-10] m.z.b.spring.boot.BraumShieldProcessor : [127.0.0.1]在2000毫秒内已连续发起 1 次请求
2018-11-05 17:39:44.097 DEBUG 18020 --- [nio-8080-exec-2] m.z.b.spring.boot.BraumShieldProcessor : [127.0.0.1]在2000毫秒内已连续发起 2 次请求
2018-11-05 17:39:44.589 DEBUG 18020 --- [nio-8080-exec-4] m.z.b.spring.boot.BraumShieldProcessor : [127.0.0.1]涉嫌恶意访问已被临时限制!共被限制过[5]次,本次剩余限制时间:3000 ms
2018-11-05 17:39:44.590 INFO 18020 --- [nio-8080-exec-4] com.example.demo.BraumIntercepter : 古恩吧,不接你这种客了
2018-11-05 17:39:49.342 DEBUG 18020 --- [nio-8080-exec-5] m.z.b.spring.boot.BraumShieldProcessor : [127.0.0.1]在2000毫秒内已连续发起 1 次请求
2018-11-05 17:39:49.852 DEBUG 18020 --- [nio-8080-exec-8] m.z.b.spring.boot.BraumShieldProcessor : [127.0.0.1]在2000毫秒内已连续发起 2 次请求
2018-11-05 17:39:50.293 DEBUG 18020 --- [io-8080-exec-10] m.z.b.spring.boot.BraumShieldProcessor : [127.0.0.1]涉嫌恶意访问已被临时限制!共被限制过[6]次,本次剩余限制时间:3000 ms
2018-11-05 17:39:50.294 INFO 18020 --- [io-8080-exec-10] com.example.demo.BraumIntercepter : 古恩!
2018-11-05 17:39:54.943 DEBUG 18020 --- [nio-8080-exec-3] m.z.b.spring.boot.BraumShieldProcessor : [127.0.0.1]在2000毫秒内已连续发起 1 次请求
2018-11-05 17:39:55.389 DEBUG 18020 --- [nio-8080-exec-6] m.z.b.spring.boot.BraumShieldProcessor : [127.0.0.1]在2000毫秒内已连续发起 2 次请求
2018-11-05 17:39:55.884 DEBUG 18020 --- [nio-8080-exec-7] m.z.b.spring.boot.BraumShieldProcessor : [127.0.0.1]涉嫌恶意访问已被临时限制!共被限制过[7]次,本次剩余限制时间:3000 ms
2018-11-05 17:39:55.885 INFO 18020 --- [nio-8080-exec-7] com.example.demo.BraumIntercepter : 古恩!
yadong.zhang0415(a)gmail.com
支付宝 | 微信 |
---|---|
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。