`
txf2004
  • 浏览: 7039901 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

对IP及IP段进行访问限制

PHP 
阅读更多

本来是写了几个函数,IP黑名单是记到库里的,为了方便理解,改成了一个class把IP黑名单写了出来。

192.168.1.1 单个IP
192.168.1.* 这样代理 192.168.1.1-192.168.1-255
192.158.1.2-20 这样是代表192.158.1.2-192.158.1.20
也可以这样写 192.168.1.[1|2|3]

嘿嘿~一个方法不知道想法是否周全,拿出来大家讨论

使用
以下是引用片段:
$oBlock_ip = new block_ip();
$oBlock_ip->checkIP();

以下是引用片段:
<?php
class block_ip {
var $Block_ip = array("192.168.1.1","210.10.2.1-20","222.34.4.*");

function __construct(){

}

function __destruct(){

}

private function makePregIP($str){
if (strstr($str,"-")) {
$aIP = explode(".",$str);
foreach ($aIP as $k=>$v) {
if (!strstr($v,"-")) {
$preg_limit .= makePregIP($v);
} else{
$aipNum = explode("-",$v);
for($i=$aipNum[0];$i<=$aipNum[1];$i++){
$preg .=$preg?"|".$i:"[".$i;
}
$preg_limit .=strrpos($preg_limit,".",1)==(strlen($preg_limit)-1)?$preg."]":".".$preg."]";
}
}
}else{
$preg_limit .= $str.".";
}
return $preg_limit;
}

private function getAllBlockIP(){
if ($this->Block_ip) {
foreach ($this->Block_ip as $k=>$v) {
$ipaddres = $this->makePregIP($v->start_ip);
$ip = str_ireplace(".","\.",$ipaddres);
$ip = str_replace("*","[0-9]{1,3}",$ip);
$ipaddres = "/".$ip."/";
$ip_list[] = $ipaddres;
}
}
return $ip_list;
}

public function checkIP() {
$iptable = $this->getAllBlockIP();
$IsJoined = true;
//取得用户ip
$Ip = $this->get_client_ip();
$Ip = trim($Ip);
//剔除黑名单中的IP区段
if ($iptable) {
foreach($iptable as $value) {
if (preg_match("{$value}",$Ip)) {
$IsJoined = false;
break;
}
}
}
//如果在ip黑名单中就执行如下操作
if( !$IsJoined ){
echo "IP Error";
exit;
}
}

private function get_client_ip(){
if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
$ip = getenv("HTTP_CLIENT_IP");
else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
$ip = getenv("REMOTE_ADDR");
else if (isset($_SERVER[’REMOTE_ADDR’]) && $_SERVER[’REMOTE_ADDR’] && strcasecmp($_SERVER[’REMOTE_ADDR’], "unknown"))
$ip = $_SERVER[’REMOTE_ADDR’];
else
$ip = "unknown";
return($ip);
}

}
?>

分享到:
评论

相关推荐

    IP地址段的过滤,限制ip,限制主机访问

    例如,限制所有属于某个公司网络(可能拥有一个共同的前缀)的IP访问。 6. **IP地址的判断与转换**:在Java中,可以使用`java.net.InetAddress`类获取和解析IP地址。`InetAddress.getByName(ip)`可将字符串形式的IP...

    zookeeper限制ip版

    通过以上改造,我们成功为Zookeeper 3.4.14增加了IP访问控制功能,增强了系统安全性。然而,需要注意的是,这种改造可能会引入额外的复杂性和潜在的性能影响,因此在实际部署时,需要根据具体场景权衡利弊,确保改造...

    Springboot过滤器禁止ip频繁访问功能实现

    Springboot过滤器禁止ip频繁访问功能实现是指在Springboot项目中,通过编写一个过滤器来限制ip频繁访问的功能实现。这项功能可以防止恶意ip的访问,保护服务器的安全。 首先,需要了解什么是过滤器。在Web开发中,...

    php限制ip访问次数.txt

    php限制ip访问次数.txt php限制ip访问次数.txt php限制ip访问次数.txt php限制ip访问次数.txt

    java 动态换ip限制 ip频繁限制

    通常,服务器会记录每个IP地址在一定时间内的请求次数,当超过预设阈值时,就会对这个IP进行封锁或者限制其访问速度。这种机制可以有效防止DDoS攻击和非法数据抓取。 在Java中,应对IP限制的方法多种多样,以下是...

    IP安全策略限制IP进入远程桌面设置方法

    在网络安全管理中,限制特定IP访问远程桌面是一种有效的安全措施,可以防止未经授权的用户尝试登录并控制服务器。本文将详细讲解如何通过IP安全策略来设置这一限制,以增强服务器的安全性。 首先,我们需要理解IP...

    Windows下通过ip安全策略设置只允许固定IP远程访问

    Windows 操作系统提供了 IP 安全策略功能,可以限制固定 IP 远程访问,以提高系统的安全性。下面是具体的设置步骤和知识点: 一、创建安全策略 在 Windows 中,需要创建一个新的安全策略,以限制固定 IP 远程访问...

    discuz 6.1插件_版块限制访问IP

    5. **日志记录**:记录被拒绝的IP访问尝试可以帮助管理员识别潜在的攻击模式,并及时调整策略。 总之,Discuz! 6.1插件版块限制访问IP功能是一项重要的管理工具,它能帮助论坛管理员精确控制内容的访问权限,以确保...

    限制IP段访问

    可以限制某IP不能访问网站,过滤

    cookie访问限制ip

    在IT行业中,尤其是在Web开发领域,Cookie访问限制IP是一个重要的安全策略,用于保护网站免受恶意用户的攻击。本文将深入探讨如何使用JavaScript(JS)来实现这一功能,并针对可能出现的兼容性问题提供解决方案。 ...

    设置IIS限制IP访问网站

    设置 IIS 限制 IP 访问网站 设置 IIS 限制 IP 访问网站是指通过 IIS 管理器限制某些 IP 地址或域名访问特定网站目录,以提高网站的安全性。本文将详细介绍设置 IIS 限制 IP 访问网站的步骤和相关知识点。 一、为...

    IP访问限制ASP程序(可加入后台) v1.0

    IP访问限制ASP程序(可加入后台) 1.0 介绍: #fceywz_ip 文件夹:数据库文件夹 里面的#fceywz_ip.asa是ACCSEE2003数据库 ip.asp 管理可访问网页的IP地址管理; ip_tj.asp 添加新的IP地址; ip_xg.asp 修改IP...

    php限制访问ip,ip段.txt

    php限制访问ip

    通过路由条目拒绝国外IP屏蔽国外IP访问服务器

    ### 通过路由条目拒绝国外IP访问服务器 #### 背景介绍 随着互联网技术的飞速发展,网络安全问题日益凸显。服务器作为互联网的核心组成部分,面临着来自全球各地的各种威胁。尤其是那些面向公众开放的服务器,更...

    VB ip限制访问代码

    本篇文章将详细解析一段用VBScript编写的IP限制访问代码,并对其中涉及的关键概念和技术点进行深入解读。 #### 二、关键知识点 ##### 1. IP地址转换为数字表示 - **函数定义**:`IP2Num` 函数用于将IP地址转换为...

    远程桌面端口修改及限制IP访问

    远程桌面端口修改及限制IP访问 远程桌面端口修改及限制IP访问是指在远程桌面连接中修改默认的3389端口号,并限制访问的IP地址,以确保服务器的安全。下面是详细的知识点: 一、远程桌面端口修改: 1. 打开注册表 ...

    对于一个IP段区域做限制访问

    对于一个IP段区域做限制访问,譬如,对校院站点资源限制校园以外的电脑访问.

    限制IP段与单个IP访问某页面 PHP源代码

    限制IP段与单份个IP访问某页面 PHP源代码 注释详细

    mysql设置指定ip远程访问连接实例

    - 要限制只允许特定IP(例如218.12.50.60)的远程访问,修改命令如下: ``` GRANT ALL PRIVILEGES ON *.* TO 'root'@'218.12.50.60' IDENTIFIED BY 'jb51' WITH GRANT OPTION; FLUSH PRIVILEGES; ``` 2. **...

    IP安全策略设置设置指定的IP地址访问指定的端口

    通过以上步骤,你已经成功地设置了一个简单的防火墙,限制了只有指定IP地址可以访问Mas数据库的1433端口,而其他IP地址的尝试将会被阻止。这种策略有助于保护数据库免受非法访问,提升了系统的安全性。然而,记得...

Global site tag (gtag.js) - Google Analytics