# 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作为规则源,该模块也可以自定义 **设计** ![输入图片说明](http://git.oschina.net/uploads/images/2016/0827/163629_309613b0_974752.png "在这里输入图片标题") **问题** 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 个人技术能力有限,还望读者多多指教,谢谢!