SpringBoot 实现控制器 IP 访问次数限制

在 Web 中最经常发生的就是利用恶性 URL 访问刷爆服务器之类的攻击,今天我就给大家介绍一下如何利用自定义注解实现这类攻击的防御操作。

其实这类问题一般的解决思路就是:在控制器中加入自定义注解实现访问次数限制的功能。

具体的实现过程看下面的例子:

package example.controller.limit;  
import org.springframework.core.Ordered;  
import org.springframework.core.annotation.Order;  
import java.lang.annotation.*;  
  @Retention(RetentionPolicy.RUNTIME)  
  @Target(ElementType.METHOD)  
  @Documented  
  //最高优先级  
   @Order(Ordered.HIGHEST_PRECEDENCE)  
  public @interface RequestLimit {  
      /** 
       * 
       * 允许访问的次数,默认值MAX_VALUE 
       */  
      int count() default Integer.MAX_VALUE;  
    
      /** 
       * 
       * 时间段,单位为毫秒,默认值一分钟 
       */  
      long time() default 60000;  
  }
时间: 2024-10-29 19:11:10

SpringBoot 实现控制器 IP 访问次数限制的相关文章

python统计apache、nginx访问日志IP访问次数并且排序(显示前20条)

前言:python统计apache.nginx访问日志IP访问次数并且排序(显示前20条).其实用awk+sort等命令可以实现,用awk数组也可以实现,这里只是用python尝试下. apache脚本: ips = {} with open("/root/mail_access_log-20180629") as fh:     for line in fh:         ip = line.split(" ")[0]         if 6 < le

七牛用户怎样自己统计空间ip访问次数

Qiniu 七牛问题解答 七牛空间开启下载日志后,怎么查看空间是否有ip去刷流量. 问题解决方案 1,首先你要有linux的系统或者mac系统 2,下载日志到本地 3,统计最热资源的访问次数排名前20: zcat qwe.gz | awk '{a[$7]+=1} END{for (i in a) print a[i] " ==> " i}' | sort -rn | head -20 4,统计访问ip的前20 cat part01.txt | awk '{a[$1]+=1} EN

IIS日志——统计IP访问次数的一种方法

使用LogParser对IIS服务器被Hit访问的IP进行次数统计,方便结合防火墙IP***列表对IIS网站进行日志审计报表的编写 配置IIS网站的日志 下载进行日志分析的两个工具LogParser(命令行工具),下载地址:http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=24659LogParser Studio(图形化工具),下载地址:http://gallery.technet.microsoft.

你用pig分析access_log日志中ip访问次数

环境说明: os版本:rhel5.7 64位 hadoop版本:hadoop-0.20.2 hbase版本:hbase-0.90.5 pig版本:pig-0.9.2 访问日志文件,下载文章中的附件! 日志放在本地目录路径为:/home/hadoop/access_log.txt 日志格式为: 220.181.108.151 - - [31/Jan/2012:00:02:32 +0800] "GET /home.php?mod=space&uid=158&do=album&

操作文件-取出一个60s内log日志中ip访问次数超过100次的ip

import timea=0while True: d={} f = open(r"/Users/**juan/Downloads/access.log",encoding="utf-8") f.seek(a) for line in f: if line.split() !="": f1=line.split(" ")[0] if f1 not in d: d[f1]=1 else: d[f1] += 1 a=f.tell(

配置nginx限制ip访问次数

修改服务器上的nginx的配置文件 /usr/local/nginx/conf/nginx.conf http { limit_req_zone $binary_remote_addr zone=one:10m rate=3000r/m; proxy_cache_path  /var/cache/nginx levels=1:2 keys_zone=one:8m max_size=3000m inactive=600m; proxy_temp_path /var/tmp; include    

springboot过滤器禁止ip频繁访问

1.编写一个过滤器: import lombok.extern.slf4j.Slf4j; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.

Java web--Filter过滤器分IP统计访问次数

分IP统计访问次数即网站统计每个IP地址访问本网站的次数. 分析 因为一个网站可能有多个页面,无论哪个页面被访问,都要统计访问次数,所以使用过滤器最为方便. 因为需要分IP统计,所以可以在过滤器中创建一个Map,使用IP为key,访问次数为value.当有用户访问时,获取请求的IP,如果IP在Map中存在,说明以前访问过,那么在访问次数上加1,即可:IP在Map中不存在,那么设置次数为1. 那么问题来了! 问题一:为什么使用Map存放? Map是一个由键值对组成的数据结构,其中所有的key组成一

Java web 实现 之 Filter分析ip统计网站的访问次数

统计工作需要在所有资源之前都执行,那么就可以放到Filter中了. 我们这个过滤器不打算做拦截操作!因为我们只是用来做统计的. 用什么东西来装载统计的数据.Map<String,Integer> 整个网站只需要一个Map即可! Map什么时候创建(使用ServletContextListener,在服务器启动时完成创建,并只在到ServletContext中),Map保存到哪里!(Map保存到ServletContext中!!!) Map需要在Filter中用来保存数据 Map需要在页面使用,