java接口如何有效防止恶意请求
解决方法:
1.在redis数据库db0中新建一个名为rd_sms_request_count表,表结构:
Ip:客户请求的ip
Success_count:成功次数
Failure_count:失败次数
Is_close:是否已经加入到防火墙黑名单,1是 0否 ,默认0
2.结合业务,判单哪个ip是恶意的,每当一个ip访问接口,按照代码返回码,如果是都是错误请求,添加到redis数据库中的Failure_count字段加1,如果都是返回正确结果,那么Success_count加1,Java后台启动一个线程,每天统计一次rd_sms_request_count,先删除rd_sms_request_coun表的Success_count大于0的记录,证明这个ip是正常用户;如果Success_count等于0而且Failure_count大于10000(规则可自定义)就通过java代码把这个ip加入到iptables黑名单中,加入到iptables黑名单中的记录设置为1。
3.把满足条件的ip加入到iptables黑名单中核心代码(在linux测试过可以)
String[] cmd = new String[] { "/bin/sh", "-c", "iptables -I INPUT -s 211.1.0.24 -j DROP;iptables -I INPUT -s 211.1.0.25 -j
DROP" };
try {
Runtime.getRuntime().exec(cmd);
} catch (Exception e) {
e.printStackTrace();
}finally {
Runtime.getRuntime().exec("service iptables save");
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决