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

PHP实现IP黑白名单过滤

阅读更多
    需求来自一个运维的同事,对一个php文件执行进行IP过滤,不方便直接配置服务器,于是需要直接在php文件开头进行IP的过滤。
    IP过滤规则,可以有如下形式:
    1.完整的IP地址 如:192.168.0.1 
    2.某一段IP 如:192.168.0.* 。
    运维可以自定义IP黑白名单,由多个IP过滤规则组成,保存在数组中。通过编写代码,实现IP黑白名单功能。一个比较简单的需求。
    首先实现一个函数,功能是判断ip是否符合某个ip过滤规则:
   
function ip_test($ip,$iprule){
   $ipruleregexp=str_replace('.*','ph',$iprule);
   $ipruleregexp=preg_quote($ipruleregexp,'/');
   $ipruleregexp=str_replace('ph','\.[0-9]{1,3}',$ipruleregexp);

   if(preg_match('/^'.$ipruleregexp.'$/',$ip)) return true;
   else return false;
   
}
    

    实现了ip_test这个核心函数后,下面的过程就简单多了,无非就是简单的遍历名单中的每条规则,判断当前连接的IP是否符合规则,并进行对应的步骤。
     白名单,当IP至少满足一条规则时继续执行操作
    
     $curr_ip=$_SERVER['REMOTE_ADDR'];
     $white_list=array(...); //白名单规则
     $test_success=false;
     foreach($white_list as $iprule){
        if(ip_test($curr_ip,$iprule)){
           $test_success=true;
           break;
        }
     }
     if(!$test_success) exit('IP not in white list');

     

     黑名单,当IP不满足所有规则时继续执行操作
    
     $curr_ip=$_SERVER['REMOTE_ADDR'];
     $black_list=array(...); //黑名单规则
     foreach($black_list as $iprule){
        if(ip_test($curr_ip,$iprule)){
           exit('IP in black list');
        }
     }
     

     就这样,一个简单的PHP实现的IP黑白名单过滤就完成了。这篇博客主要是给那些主业务不是开发的人员,如:技术支持、运维等。由于太简单,原本不想写,后来那个同事感谢我帮忙,对我说这个他在网上找了很久,都没有找到合适的解决方案,我就想说不定这个还真有人需要呢。  
分享到:
评论

相关推荐

    Exchange2010黑白名单设置

    黑白名单设置的工作原理是:邮件服务器会自动对收发邮件进行检查,如果邮件来自黑名单中的 IP 地址或域名,则邮件服务器将拒绝接受该邮件;如果邮件来自白名单中的 IP 地址或域名,则邮件服务器将允许接受该邮件。 ...

    Laravel开发-laravel-ip-filter

    5. **多策略支持**:支持多种过滤策略,如白名单、黑名单、IP段过滤等。 6. **日志记录**:自动记录被拒绝或允许的IP请求,便于监控和分析。 使用`laravel-ip-filter`,开发者可以更高效、安全地管理Laravel应用的...

    云黑系统 浪客云黑3.0 黑名单系统PHP源码

    《云黑系统 浪客云黑3.0 黑名单系统PHP源码》是一款基于PHP开发的黑名单管理系统,主要用于帮助网站或网络服务提供商过滤和管理潜在的恶意IP、用户名、邮箱等黑名单信息,以提高网络安全性和用户体验。在这个系统中...

    护卫神(非法信息过滤系统)

    ☆ IP白名单,白名单终端IP可以访问除URL黑名单中的所有原始内容; ☆ 黑名单优先级高于白名单。 8、Gzip过滤支持 ☆ 开启【Gzip过滤】后,将可以过滤经过Gzip压缩的网页。 9、日志分析 ☆ 每天一个日志文件,...

    护卫神非法信息过滤系统 v2.0

    IP白名单,白名单终端IP可以访问除URL黑名单中的所有原始内容; 黑名单优先级高于白名单。 8、Gzip过滤支持 开启【Gzip过滤】后,将可以过滤经过Gzip压缩的网页。 9、日志分析 每天一个日志文件,详细的日志分析,...

    Laravel开发-ip-blocker

    5. **黑名单管理**:黑名单可以存储在数据库中,方便添加、删除和查询IP地址。Laravel的Eloquent ORM使得与数据库交互变得简单。你可能需要一个`IpBlacklist`模型来代表黑名单表,并提供相应的CRUD操作。 6. **日志...

    ph资源打ip

    5. **IP黑名单/白名单**:在网站安全策略中,可以建立IP黑名单或白名单,限制特定IP的访问。这通常涉及到`array_search()`或`in_array()`函数,检查IP是否存在于预定义的列表中。 6. **IP路由与网络掩码**:在更...

    基于PHP实现的一个支持多平台、全网范围的广告拦截工具源码

    1. **URL黑名单过滤**:PHP代码中包含了广告服务器的URL黑名单列表,通过比对请求的URL,如果命中黑名单,则阻止广告加载。这一步依赖于高效的字符串匹配算法,如KMP或Boyer-Moore,以快速定位黑名单中的模式。 2. ...

    黑名单系统源码 二开API美化版+添加随机背景图+支持多种运行环境

    整了个 API 系统,支持文本和 JSON 输出添加更多的 Bootstrap 图标,更美观添加随机背景图(以前就有只不过没放图片)主页公告下面添加一个 IP 访问信息,可以分辨 ipv4 和 v6 公告下面添加一言添加安全系统,防止 ...

    Exchange2010 白名单配制手册

    黑白名单主要是针对垃圾邮件过滤(SPAM),只有开启了允许/阻止程序列表和名单列表的功能,邮件服务器才能自动对收发邮件进行相应的拒绝或者标记操作。 二、允许/阻止程序 允许/阻止程序是国际上第三方较为知名的...

    限制访问IP地址程序(数据库版)

    这两个表可能分别存储了允许访问的IP白名单和禁止访问的IP黑名单。通常,这种系统会有一个配置界面或后台管理系统,管理员可以在这里添加、删除或修改IP地址列表。表的结构可能包含IP地址、备注、创建时间等字段,...

    phpIP地址查询

    在实际项目中,"ip"文件可能是用来存储IP地址的列表,用于黑名单过滤、访问统计等用途。可以通过读取该文件,与访问者IP进行对比,实现特定功能。 总结来说,PHP IP地址查询涉及到获取、验证、转换、分类、地理位置...

    PHP实例开发源码-PHP版 防火墙.zip

    2. **IP黑白名单**:防火墙可能有一个功能,即根据IP地址对访问者进行分类,允许或拒绝某些IP的请求。这可以通过PHP的`$_SERVER['REMOTE_ADDR']`全局变量获取客户端IP,然后与维护的IP列表进行比较。 3. **速率限制...

    Laravel开发-firewall

    总结,Laravel 4.1的IP防火墙功能主要依赖于中间件机制,通过自定义中间件可以轻松地实现IP白名单和黑名单管理,从而提高应用的安全性。随着Laravel版本的更新,其安全特性也得到了进一步增强,但理解这一基础概念...

    智创IIS防火墙(网页关键字过滤拦截软件)

    6、限制指定IP地址(IP地址黑名单)不能访问服务器,以及代理服务器访问限制等; 7、在线观看IIS中运行的ASP/PHP脚本执行情况和执行时间,方便排查有问题的IIS网站中ASP/PHP脚本; 8、IIS强迫性广告功能(在网页...

    智创IIS防火墙(非法信息过滤拦截系统)

    6、限制指定IP地址(IP地址黑名单)不能访问服务器,以及代理服务器访问限制等; 7、在线观看IIS中运行的ASP/PHP脚本执行情况和执行时间,方便排查有问题的IIS网站中ASP/PHP脚本; 8、IIS强迫性广告功能(在网页...

    基于PHP的某新版防红网源码(asp php都可使用).zip

    2. **黑名单机制**:防红网可能维护一个黑名单,其中包含已知的恶意IP、域名或URL模式。当新的请求与黑名单匹配时,系统将拒绝或重定向这些请求。 3. **验证码**:为了防止自动化程序的攻击,防红网可能会采用...

    Laravel开发-antonioribeiro-firewall

    在本文中,我们将深入探讨"Laravel开发-antonioribeiro-firewall"这一开源项目,它是一个专门为Laravel 4.1框架设计的IP过滤工具,用于实现IP白名单和黑名单功能。Laravel作为PHP最流行的Web开发框架之一,提供了...

    基于PHP的科威php防火墙.zip

    3. **规则文件**:定义了哪些行为被视为安全或不安全,例如黑名单或白名单的IP地址,特定的HTTP请求头或参数。 4. **文档**:说明如何使用防火墙,配置选项,以及常见问题解答。 5. **示例配置**:帮助用户快速设置...

    wzymfffh_v20.4.16_php_

    此软件通过一系列智能策略和技术手段,包括但不限于IP黑白名单管理、流量清洗、异常行为检测等,来预防和应对这些问题。 首先,IP黑白名单管理是防御机制的核心之一。通过收集和分析访问者的IP地址,软件能识别并...

Global site tag (gtag.js) - Google Analytics