PHP实现白名单或黑名单
/**
* 安全IP检测,支持IP段检测
* @param string $ip 要检测的IP
* @param string|array $ips 白名单IP或者黑名单IP
* @return boolean true 在白名单或者黑名单中,否则不在
*/
function is_safe_ip($ip="",$ips=""){
if(!$ip) $ip = get_client_ip(); //获取客户端IP
if($ips){
if(is_string($ips)){ //ip用"," 例如白名单IP:192.168.1.13,123.23.23.44,193.134.*.*
$ips = explode(",", $ips);
}
}else{ //读取后台配置 白名单IP
$obj = new Setting();
$ips = explode(",", $obj->getConfig("whiteip"));
}
if(in_array($ip, $ips)){
return true;
}
$ipregexp = implode('|', str_replace( array('*','.'), array('\d+','\.') ,$ips));
$rs = preg_match("/^(".$ipregexp.")$/", $ip);
if($rs) return true;
return ;
}
/**
* 获取客户端IP地址
* @param integer $type 返回类型 0 返回IP地址 1 返回IPV4地址数字
* @param boolean $adv 是否进行高级模式获取(有可能被伪装)
* @return mixed
*/
function get_client_ip($type = 0,$adv=false) {
$type = $type ? 1 : 0;
static $ip = NULL;
if ($ip !== NULL) return $ip[$type];
if($adv){
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
$pos = array_search('unknown',$arr);
if(false !== $pos) unset($arr[$pos]);
$ip = trim($arr[0]);
}elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
}elseif (isset($_SERVER['REMOTE_ADDR'])) {
$ip = $_SERVER['REMOTE_ADDR'];
}
}elseif (isset($_SERVER['REMOTE_ADDR'])) {
$ip = $_SERVER['REMOTE_ADDR'];
}
// IP地址合法验证
$long = sprintf("%u",ip2long($ip));
$ip = $long ? array($ip, $long) : array('0.0.0.0', 0);
return $ip[$type];
}
PHP实现白名单或黑名单的更多相关文章
- servlet过滤器配置白名单、黑名单
1.web.xml配置 <filter> <description>过滤是否登陆</description> <filter-name>encoding ...
- RouteOS软路由HotSpot热点认证网关添加白名单和黑名单
1.添加白名单和黑名单地址池 白名单IP地址池 172.18.10.0/24 黑名单IP地址池 172.18.20.0/24 2.添加IP网关 白名单网关 172.18.10.0/24 黑名单网关 1 ...
- Nginx配置IP白名单和黑名单
白名单设置,访问根目录 location / { allow 123.34.22.155; allow ; deny all; } 黑名单设置,访问根目录 location / { deny 123. ...
- [WebServer] Tomcat 配置访问限制:访问白名单和访问黑名单
前言: 昨天配置了 Tomcat 服务器运行 PHP 的环境,但是通过观察 Tomcat 这几天的日志发现,有很多莫名其妙的 IP 访问主机下莫名其妙的地址,如:/80./testproxy.php. ...
- Postfix邮件黑名单和白名单
本文主要介绍如何用Postfix添加域名黑名单和白名单,用以处理垃圾邮件. 1.修改postfix主配置文件,增加限制语句 vim /etc/postfix/main.cf # 文末添加一行,限制往本 ...
- Oracle数据库IP访问限制(IP白名单黑名单)
1.编辑sqlnet.ora 内容为: #允许访问的IP(白名单) TCP.INVITED_NODES=(127.0.0.1,192.168.56.109,ip2,ip3,..,..本地IP..)若使 ...
- JWT黑名单和白名单
单点登录系统 单点登录系统保存了用户的登录名和密码,上网用户在单点登录系统中认证成功后,就可以直接登录各个业务系统. 1. 用户使用单点登录系统的登录界面,输入用户名和密码登录成功后, 单点登录系统为 ...
- Tomcat 配置访问限制:访问白名单和访问黑名单
最近公司的阿里云服务器上配置的 Tomcat 服务器运行 java的环境,但是通过观察 Tomcat 这几天的日志发现,有很多莫名其妙的 IP 访问主机下莫名其妙的地址,如:/80./testprox ...
- Proxy SwitchyOmega 使用黑名单和白名单
“黑名单”会告诉代理工具,黑名单(国外)里面的网站要使用代理:“白名单”会告诉代理工具,白名单(大陆网站)里面的网站直接连接,其余使用代理. 黑名单PAC 黑名单PAC两条(任选其一):https:/ ...
随机推荐
- CCF NOI1039 2的n次方
问题链接:CCF NOI1039 2的n次方. 时间限制: 1000 ms 空间限制: 262144 KB 题目描述 对于任意给定的n,计算2的n次方. 输入 输入整数n. 输出 输出2的n次方的值 ...
- H3C配置Web登陆
为什么80%的码农都做不了架构师?>>> 1.开启http服务. [H3C]ip http enable 2.创建web登陆的用户. [H3C]local-user king / ...
- JavaScript实现折半查找(二分查找)
一.问题描述: 在一个升序数组中,使用折半查找得到要查询的值的索引位置.如: var a=[1,2,3,4,5,6,7,8,9]; search(a,3);//返回2 search(a,1);//左边 ...
- git的下载与安装
Git的下载地址:https://git-scm.com/download/win 第一步:根据自己电脑的位数下载Git 第二步:下载安装包,放到指定的文件夹 第三步:更换路径安装Git(也可以放在C ...
- spring cloud系列教程第一篇-介绍
spring cloud系列教程第一篇-介绍 前言: 现在Java招聘中最常见的是会微服务开发,微服务已经在国内火了几年了,而且也成了趋势了.那么,微服务只是指spring boot吗?当然不是了,微 ...
- restful 架构风格的curd(增删改查)
restful架构 概念:REST指的是一组架构约束条件和原则,如果一个架构符合REST的约束条件和原则,就称之为RESTful架构. restful不是一个专门的技术,他是一个规范.规范就是写写代码 ...
- String、StringBuffer和StringBuilder比较
从执行速度效率来说: String为字符串常量,一旦创建就不能修改,第一次创建一个String对象,实例化后有初始值:当第二次创建String对象后,再次赋值,表面上看是改变了第一个String对象的 ...
- C# 中 枚举Enum 一些转换的方法整理
工作中 经常遇到枚举 的一些转换 特别是获取枚举备注等 特地整理下 方法以后使用 public void TestMethod1() { TestEnumOne colorEnum = TestE ...
- A*启发式搜索
A*启发式搜索 其实是两种搜索方法的合成( A*搜索算法 + 启发式搜索),但要真正理解A*搜索算法,还是得先从启发式搜索算法谈起. 何为启发式搜索 启发式搜索算法有点像广度优先搜索,不同的是,它会优 ...
- hex文件格式总结
hex文件格式总结 文章目录 hex文件格式总结 什么是hex文件? 文件格式 指令类型(Record type) 校验和 :04 02B0 00 92020008 AE :04 0000 05 08 ...