EasySite FireWall 防火墙模块
<?php /** EasySite FireWall 防火墙模块 13:25 2012/7/23 */ define('FW_ADMIN_KEY', '21232f297a57a5a743894a0e4a801fc3'); // 超级管理员密钥 define('FW_IP_RULE_FILE', APP_PATH.'Runtime/Conf/Config.Iprule.php'); $FW_DEFEND_IP_ON = false; // 开启IP规则过滤 $FW_DEFEND_IP_TP = 1; // 开设置IP过滤模式 0-IP黑名单过滤 1-IP白名单过滤 $FW_DEFEND_CC_ON = false; // 开启防恶意刷新 $FW_DEFEND_CC_TL = 5; // 每五次请求最小间隔时间/S if(isset($_GET['fwkey']) || isset($_COOKIE['es_admin_fwkey'])){ $fwkey = isset($_GET['fwkey']) ? trim($_GET['fwkey']) : (isset($_COOKIE['es_admin_fwkey']) ? $_COOKIE['es_admin_fwkey'] : ''); if($fwkey === FW_ADMIN_KEY) $FW_DEFEND_IP_ON = $FW_DEFEND_CC_ON = false; setcookie('es_admin_fwkey', $fwkey, time()+3600*24, SITE_PATH); } if(true === $FW_DEFEND_IP_ON){ $client_ip = get_client_ip2(); $MYFW_LIST = (include FW_IP_RULE_FILE); if(1 === $FW_DEFEND_IP_TP){ $allowed = false; $MYFW_LIST = parse_ip_list($MYFW_LIST['whitelist']); foreach($MYFW_LIST as $ip){ if(preg_match($ip, $client_ip)){ $allowed = true; break; } } if(!$allowed){ header('HTTP/1.1 403 Forbidden'); exit('HTTP/1.1 403 ES FireWall Forbidden : Not allowed IP'); } }else{ $MYFW_LIST = parse_ip_list($MYFW_LIST['blacklist']); foreach($MYFW_LIST as $ip){ if(preg_match($ip, $client_ip)){ header('HTTP/1.1 403 Forbidden'); exit('HTTP/1.1 403 ES FireWall Forbidden : Not allowed IP'); } } } unset($allowed, $client_ip, $MYFW_LIST); } if(true === $FW_DEFEND_CC_ON){ if(!session_id()) session_start(); $nowtime = $lasttime = $_SERVER['REQUEST_TIME']; if(isset($_SESSION['FireWall'])){ $lasttime = intval($_SESSION['FireWall']['lasttime']); $fwtimes = intval($_SESSION['FireWall']['fwtimes']) + (isset($_SERVER['HTTP_X_REQUESTED_WITH']) ? 0 : 1); $_SESSION['FireWall']['fwtimes'] = $fwtimes; if(($nowtime - $lasttime) < $FW_DEFEND_CC_TL){ if($fwtimes >= 5){ header('HTTP/1.1 403 Forbidden'); $_SESSION['FireWall']['lasttime'] = $nowtime; exit('HTTP/1.1 403 ES FireWall Forbidden : Not allowed CC'); } }else{ $_SESSION['FireWall']['fwtimes'] = 0; $_SESSION['FireWall']['lasttime'] = $nowtime; } }else{ $_SESSION['FireWall']['fwtimes'] = 1; $_SESSION['FireWall']['lasttime'] = $nowtime; } unset($nowtime, $lasttime, $fwtimes); } ?>
Nach dem Login kopieren
2. [PHP]代码
<?php /** * 获取客户端IP * @param void * @return String 客户端IP */ function get_client_ip2(){ if(getenv('HTTP_CLIENT_IP')){ $client_ip = getenv('HTTP_CLIENT_IP'); }elseif(getenv('HTTP_X_FORWARDED_FOR')){ $client_ip = getenv('HTTP_X_FORWARDED_FOR'); }elseif(getenv('REMOTE_ADDR')) { $client_ip = getenv('REMOTE_ADDR'); }else{ $client_ip = $HTTP_SERVER_VARS['REMOTE_ADDR']; } return $client_ip; } /** * 解析IP规则列表 * @param void * @return Array IP规则列表 */ function parse_ip_list($rules){ $arr = array(); foreach($rules as $rule){ if($rule['start_time'] > $_SERVER['REQUEST_TIME'] || $rule['end_time'] < $_SERVER['REQUEST_TIME']) continue; $ip = str_replace('.', '\.', $rule['ip']); if($start = strstr($ip, '-')){ $start = substr($ip, 0, - strlen(strrchr($ip, '.')) + 1); $pos = explode('-', trim(strrchr($ip, '.'), '.')); for($i=intval($pos[0]),$a=intval($pos[1])+1; $i < $a; $i++ ){ $arr[] = '#^'.$start.$i.'$#i'; } }elseif($start = strstr($ip, '[')){ $_ips = explode('|', substr($start, 1, -1)); $arr[] = '#^'.substr($ip, 0, - strlen($start)).'(('.implode(')|(',$_ips ).'))'.'$#i'; }elseif(strpos($ip, '*')){ $arr[] = '#^'.str_replace('*', '((25[0-5])|(2[0-4]\\d)|(1\\d{2})|(\\d{1,2}))', $ip).'$#i'; }else{ $arr[] = '#^'.$ip.'$#i'; } } return $arr; } ?>
Nach dem Login kopieren
以上就是EasySite FireWall 防火墙模块的内容,更多相关内容请关注PHP中文网(www.php.cn)!
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel
Assassin's Creed Shadows: Seashell Riddle -Lösung
3 Wochen vor
By DDD
Was ist neu in Windows 11 KB5054979 und wie Sie Update -Probleme beheben
2 Wochen vor
By DDD
Wo kann man die Kransteuerungsschlüsselkarten in Atomfall finden
3 Wochen vor
By DDD
Assassins Creed Shadows - So finden Sie den Schmied und entsperren Sie die Waffen- und Rüstungsanpassung
1 Monate vor
By DDD
<🎜>: Dead Rails - wie man jede Herausforderung abschließt
3 Wochen vor
By DDD

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen
CakePHP-Tutorial
1389
52

