本来是写了几个函数,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访问。 6. **IP地址的判断与转换**:在Java中,可以使用`java.net.InetAddress`类获取和解析IP地址。`InetAddress.getByName(ip)`可将字符串形式的IP...
通过以上改造,我们成功为Zookeeper 3.4.14增加了IP访问控制功能,增强了系统安全性。然而,需要注意的是,这种改造可能会引入额外的复杂性和潜在的性能影响,因此在实际部署时,需要根据具体场景权衡利弊,确保改造...
Springboot过滤器禁止ip频繁访问功能实现是指在Springboot项目中,通过编写一个过滤器来限制ip频繁访问的功能实现。这项功能可以防止恶意ip的访问,保护服务器的安全。 首先,需要了解什么是过滤器。在Web开发中,...
php限制ip访问次数.txt php限制ip访问次数.txt php限制ip访问次数.txt php限制ip访问次数.txt
通常,服务器会记录每个IP地址在一定时间内的请求次数,当超过预设阈值时,就会对这个IP进行封锁或者限制其访问速度。这种机制可以有效防止DDoS攻击和非法数据抓取。 在Java中,应对IP限制的方法多种多样,以下是...
在网络安全管理中,限制特定IP访问远程桌面是一种有效的安全措施,可以防止未经授权的用户尝试登录并控制服务器。本文将详细讲解如何通过IP安全策略来设置这一限制,以增强服务器的安全性。 首先,我们需要理解IP...
Windows 操作系统提供了 IP 安全策略功能,可以限制固定 IP 远程访问,以提高系统的安全性。下面是具体的设置步骤和知识点: 一、创建安全策略 在 Windows 中,需要创建一个新的安全策略,以限制固定 IP 远程访问...
5. **日志记录**:记录被拒绝的IP访问尝试可以帮助管理员识别潜在的攻击模式,并及时调整策略。 总之,Discuz! 6.1插件版块限制访问IP功能是一项重要的管理工具,它能帮助论坛管理员精确控制内容的访问权限,以确保...
可以限制某IP不能访问网站,过滤
在IT行业中,尤其是在Web开发领域,Cookie访问限制IP是一个重要的安全策略,用于保护网站免受恶意用户的攻击。本文将深入探讨如何使用JavaScript(JS)来实现这一功能,并针对可能出现的兼容性问题提供解决方案。 ...
设置 IIS 限制 IP 访问网站 设置 IIS 限制 IP 访问网站是指通过 IIS 管理器限制某些 IP 地址或域名访问特定网站目录,以提高网站的安全性。本文将详细介绍设置 IIS 限制 IP 访问网站的步骤和相关知识点。 一、为...
IP访问限制ASP程序(可加入后台) 1.0 介绍: #fceywz_ip 文件夹:数据库文件夹 里面的#fceywz_ip.asa是ACCSEE2003数据库 ip.asp 管理可访问网页的IP地址管理; ip_tj.asp 添加新的IP地址; ip_xg.asp 修改IP...
php限制访问ip
### 通过路由条目拒绝国外IP访问服务器 #### 背景介绍 随着互联网技术的飞速发展,网络安全问题日益凸显。服务器作为互联网的核心组成部分,面临着来自全球各地的各种威胁。尤其是那些面向公众开放的服务器,更...
本篇文章将详细解析一段用VBScript编写的IP限制访问代码,并对其中涉及的关键概念和技术点进行深入解读。 #### 二、关键知识点 ##### 1. IP地址转换为数字表示 - **函数定义**:`IP2Num` 函数用于将IP地址转换为...
远程桌面端口修改及限制IP访问 远程桌面端口修改及限制IP访问是指在远程桌面连接中修改默认的3389端口号,并限制访问的IP地址,以确保服务器的安全。下面是详细的知识点: 一、远程桌面端口修改: 1. 打开注册表 ...
对于一个IP段区域做限制访问,譬如,对校院站点资源限制校园以外的电脑访问.
限制IP段与单份个IP访问某页面 PHP源代码 注释详细
- 要限制只允许特定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地址可以访问Mas数据库的1433端口,而其他IP地址的尝试将会被阻止。这种策略有助于保护数据库免受非法访问,提升了系统的安全性。然而,记得...