# app_security
**Repository Path**: jawang/app_security
## Basic Information
- **Project Name**: app_security
- **Description**: 基于tomcat接口请求频率限制
- **Primary Language**: Java
- **License**: Zlib
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 1
- **Created**: 2016-08-27
- **Last Updated**: 2021-11-03
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
#app_security
**背景说明:**
最近因为公司app后台屡次造恶意并发请求,特开发了此app安全模块;
**功能:**
1、可以限制特定请求路径在单位时间内总请求次数
2、可以设置黑白名单
3、可以限制ip在某些路径下面请求频率,如果大于改频率,可以自定义该ip冻结时间
4、支持更改规则不需要重启tomcat
**使用技术**
1、系统扩展了tomcat的Valve和LifecycleListener,可以无缝集成到tomcat里面,应用不需要添加任何代码;
2、使用了zookeeper作为配置源,主要是配置规则源和缓存服务的参数信息,用户也可以自定义配置源
3、使用了redis作为缓存和计数器(用来计算ip请求次数),用户也可以自定义缓存和计数器
4、使用了mysql作为规则源,该模块也可以自定义
**设计**

**问题**
1、为什么不写成独立服务?
答:之前考虑过这件事情,最终还是没有这样做,是因为本地调用效率高于tcp或者http方式请求独立服务
**使用方法**
第一步:将项目打成jar包,最好使用maven将依赖的包一起打包
第二步:将jar包放入/tomcat/lib下
第三步:进入/tomcat/conf,
1)编辑context.xml,在context标签体里面加入:
```
```
ruleTimeOut:是指执行安全过滤超时时间
2)编辑server.xml,在Server标签体里面加入:
```
```
configServerURL:指的是配置文件服务地址,我用的是zookeeper,appName和env事实是zk中的配置节点路径(/app_config/appName/env)
第四步:重启tomcat
个人技术能力有限,还望读者多多指教,谢谢!