摘要:白名單或者黑名單,目的是為了達到一種受限訪問,希望在名單內用戶可以訪問,就把名單叫白名單希望在名單內用戶拒絕訪問,就是黑名單。但我覺的它不夠靈活,我選擇在應用程序中來實現名單機制。
ip白名單或者黑名單,目的是為了達到一種受限訪問,希望在名單內用戶可以訪問,就把名單叫白名單;希望在名單內用戶拒絕訪問,就是黑名單。無論我們希望使用哪種名單方式,實現方式都一樣。
在nginx下我們通常會考慮用nginx+lua的方式來實現,它很優雅速度快。確實,這是一種方案,我也做過這種方案的研究。但我覺的它不夠靈活,我選擇在應用程序中來實現名單機制。
主要思路:用戶->獲取ip->redis取出名單庫->比對->處理
代碼Github庫:https://github.com/jacoobwang...
控制訪問
connect("127.0.0.1", 6379); $ip_white_list = $inst->sMembers("ip_blacklist"); if(!in_array($ip, $ip_white_list)) { echo "HTTP/1.1 403 Forbidden
"; header("HTTP/1.1 403 Forbidden"); } } } /** * 獲取用戶的IP * * @return void */ function getRemoteIp(){ if(isset($_SERVER["HTTP_X_FORWARDED_FOR"])){ $ip = $_SERVER["HTTP_X_FORWARDED_FOR"]; }elseif(isset($_SERVER["HTTP_CLIENT_IP"])){ $ip = $_SERVER["HTTP_CLIENT_IP"]; }elseif(getenv("HTTP_X_FORWARDED_FOR")){ $ip = getenv("HTTP_X_FORWARED_FOR"); }elseif(getenv("HTTP_CLIENT_IP")){ $ip = getenv("HTTP_CLIENT_IP"); }elseif($_SERVER["REMOTE_ADDR"]){ $ip = $_SERVER["REMOTE_ADDR"]; } else{ $ip = null; } return $ip; }
動態配置頁面
connect("127.0.0.1", 6379); $ip = $inst->sMembers("ip_blacklist"); $li = ""; foreach($ip as $val) { $li .= "
配置頁面接口
connect("127.0.0.1", 6379); $type = isset($_POST["type"]) ? $_POST["type"] : ""; $ip = isset($_POST["ip"]) ? $_POST["ip"] : ""; if(!empty($ip)){ $isExist = $inst->sIsMember("ip_blacklist",$ip); if($isExist) { if($type == "delete"){ // delete $rs = $inst->sRemove("ip_blacklist",$ip); echo $rs; } } else { if($type == "add"){ if(preg_match("/^d{2,3}.d{2,3}.d{2,3}.d{1,3}$/",$ip)) { $rs = $inst->sAdd("ip_blacklist",$ip); echo $rs; } else { echo 2; } } } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/22843.html
摘要:實現思路畫了個簡易流程圖,方便大家理解。如果存在就繼續向下流程,如果不存在則向右流程,返回,這樣就拒絕了不在庫中用戶的訪問,達到了白名單效果。實現代碼參考結語如果有更多白名單問題或者白名單問題都可以留言與我聯系 今天發的是一篇續篇,主要講講如何實現?想閱讀第一篇的,點擊傳送門 首先完善了下管理配置后臺,看下dashbord長什么樣,先睹為快。 showImg(https://segme...
摘要:面向對象的分布式爬蟲框架一簡介概述是一個面向對象的分布式爬蟲框架。分布式集群集群方式維護爬蟲爬蟲運行數據,可通過或定制實現。 《面向對象的分布式爬蟲框架XXL-CRAWLER》 showImg(https://segmentfault.com/img/remote/1460000011842697);showImg(https://segmentfault.com/img/remote...
閱讀 3110·2021-11-24 09:39
閱讀 968·2021-09-07 10:20
閱讀 2389·2021-08-23 09:45
閱讀 2254·2021-08-05 10:00
閱讀 566·2019-08-29 16:36
閱讀 833·2019-08-29 11:12
閱讀 2813·2019-08-26 11:34
閱讀 1839·2019-08-26 10:56