JAVA----IP 黑名单,常用于限制用户登录,注册信息

IP 黑名单,常用于IP 黑白名单的检测

程序级:限制用户登录,恶意注册信息等
服务器级:设置安全组件,网关ip 黑,白名单等
public class IPUtils {
	/**
	  * 匹配IP
	  * 全匹配:127.0.0.1
	  * 模糊匹配:127.*.*.*, 127.0.*.*, 127.0.0.*  星符号后面需全部为 *
	  *
	  * @param ip
	  * @param ips
	  * @return
	  */
	public static boolean matchIp(String ip, List<String> ips) {
        if (ips.size() == 0) {
            return false;
        }

        if (ips.contains(ip)) {
            return true;
        }

        // 模糊匹配:带有 *
        boolean isFind = false;
        for (String key : ips) {
            if (key.contains("*")) {
                String[] single = key.split("\\.");
                for (int i = 0; i<4; i++) {
                    // 不为* 替代符则检查
                    isFind = true;
                    if (!single[i].equals("*") && !single[i].equals(ip.split("\\.")[i])) {
                        isFind = false;
                        break;
                    }
                }
                // 如果是true则找到有一个匹配成功的就返回
                if (isFind) return true;
            }
        }

        return false;
    }
}

测试

String limitIp = "117.136.92.47";
String ip = getHostIp();

log.info("设置限制IP {}, 查询IP {}, 匹配结果 {}", limitIp, ip, IPUtils.matchIp(ip, Arrays.asList(limitIp.split(","))));
// 设置限制IP 117.136.92.47, 查询IP 117.136.92.47, 匹配结果 true
// 设置限制IP 117.136.92.40, 查询IP 117.136.92.47, 匹配结果 false
// 设置限制IP 117.136.92.*, 查询IP 117.136.92.47, 匹配结果 true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值