公交车上荫蒂添的好舒服的电影-公用玩物(np双xing总受)-公用小荡货芊芊-公与妇仑乱hd-攻把受做哭边走边肉楼梯play-古装一级淫片a免费播放口

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

通過C#控制IIS網站只允許指定的動態IP白名單地址訪問,訪問者不在白名單的一律跳轉到其他指定的外部網站網頁

admin
2025年3月15日 17:39 本文熱度 710

以下是完整的C代碼實現方案,結合IIS動態配置與全自動跳轉功能:

一、核心功能實現代碼

using Microsoft.Web.Administration;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Mvc;

public class IPFilterAttribute : ActionFilterAttribute
{
    private static List<string> _allowedIPs = new List<string>
    {
        "192.168.1.1",
        "10.0.0.0-10.0.0.255" // 支持IP段格式
    };

    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        string clientIP = GetClientIP();
        if (!IsAllowedIP(clientIP))
        {
            filterContext.Result = new RedirectResult("https://external-block-page.com");
            LogBlockedIP(clientIP);
        }
    }

    private string GetClientIP()
    {
        string ip = HttpContext.Current.Request.Headers["X-Forwarded-For"]?.Split(',')[0];
        return string.IsNullOrEmpty(ip) ? HttpContext.Current.Request.UserHostAddress : ip;
    }

    private bool IsAllowedIP(string ip)
    {
        return _allowedIPs.Contains(ip) || IPRangeContains(ip, _allowedIPs);
    }

    private bool IPRangeContains(string ip, List<string> ipRanges)
    {
        foreach (var range in ipRanges.Where(r => r.Contains('-')))
        {
            var start = IPAddress.Parse(range.Split('-')[0]);
            var end = IPAddress.Parse(range.Split('-')[1]);
            var client = IPAddress.Parse(ip);
            if (client.AddressFamily == AddressFamily.InterNetworkV6)
                throw new NotSupportedException("IPv6 range check not implemented");
            var bytes = client.GetAddressBytes();
            var startBytes = start.GetAddressBytes();
            var endBytes = end.GetAddressBytes();
            if (bytes.CompareTo(startBytes) >= 0 && bytes.CompareTo(endBytes) <= 0)
                return true;
        }
        return false;
    }

    private void LogBlockedIP(string ip)
    {
        File.AppendAllText("blocked_ips.log", $"{DateTime.Now}: Blocked IP - {ip}\n");
    }

    public static void SyncIISWhitelist()
    {
        try
        {
            using (ServerManager serverManager = new ServerManager())
            {
                var siteName = "OA_SITE"; // 替換為實際網站名稱
                var site = serverManager.Sites.FirstOrDefault(s => s.Name == siteName);
                if (site == null) throw new Exception($"網站 '{siteName}' 未找到");

                var config = serverManager.GetApplicationHostConfiguration();
                var ipSecuritySection = config.GetSection("system.webServer/security/ipSecurity", siteName);
                
                if (ipSecuritySection == null)
                {
                    ipSecuritySection = config.CreateSection("system.webServer/security/ipSecurity", siteName);
                    ipSecuritySection["allowUnlisted"] = false; // 關鍵配置:未列出的IP自動拒絕
                }

                var ipCollection = ipSecuritySection.GetCollection();
                ipCollection.Clear(); // 清空現有規則

                foreach (var ip in _allowedIPs)
                {
                    var addElement = ipCollection.CreateElement("add");
                    addElement["ipAddress"] = ip;
                    addElement["action"] = "Allow";
                    addElement["allowed"] = true;
                    ipCollection.Add(addElement);
                }

                serverManager.CommitChanges();
            }
        }
        catch (Exception ex)
        {
            File.AppendAllText("sync_error.log", $"{DateTime.Now}: {ex.Message}\n");
        }
    }
}

二、關鍵配置說明

IIS配置文件修改

在 web.config 中添加以下配置,啟用IP安全規則:

<system.webServer>
  <security>
    <ipSecurity allowUnlisted="false" />
  </security>
</system.webServer>

引用說明:此配置確保未在白名單中的IP自動被拒絕。

管理員權限要求

程序需以管理員身份運行,否則無法修改IIS配置。

在Windows中可通過:

 右鍵exe -> 屬性 -> 兼容性 -> 以管理員身份運行此程序 

IP范圍支持

代碼支持IP段格式(如 10.0.0.0-10.0.0.255 ),通過 IPRangeContains 方法實現范圍檢查。

三、部署與調用步驟

初始化白名單同步

在網站啟動時調用 SyncIISWhitelist() 方法,確保IIS規則與代碼一致:

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    SyncIISWhitelist(); // 同步白名單到IIS
}

應用層攔截配置

在 Global.asax 中注冊全局過濾器:

public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new IPFilterAttribute());
    }
}

日志與監控

封禁日志記錄到 blocked_ips.log ,便于審計。

建議集成ELK或Prometheus監控日志文件,異常IP封禁時觸發告警。

 

四、功能驗證

白名單生效驗證

通過IIS管理器檢查網站配置,確認 ipSecurity 節點已正確添加白名單IP。

使用非白名單IP訪問網站,應自動跳轉至外部頁面。

IP范圍測試

添加IP段 192.168.2.0-192.168.2.100 到白名單,驗證該網段內所有IP均可訪問。

 

五、安全增強建議

雙重驗證機制

在跳轉前增加驗證碼驗證,防止自動化工具繞過IP限制。

動態白名單更新

通過管理后臺提供界面,支持手動添加/刪除白名單IP。

定期從AD域控同步內部員工IP。

備份與回滾

定期備份IIS配置文件( %windir%\System32\inetsrv\config\applicationHost.config )。

實現配置變更回滾功能,防止誤操作導致服務中斷。


通過以上方案,可實現全自動化的IP白名單控制與訪問跳轉,有效抵御外部攻擊。建議配合WAF(Web應用防火墻)和DDoS防護服務,構建縱深防御體系。


該文章在 2025/3/15 17:40:26 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 韩国福利影视一区二区三区 | 国产一区二区三区亚洲人妻 | 国产小视频精品一区二区三区 | 高清无码在线网 | av国语在线观看 | 国产成人精品系列在线观看 | 国产精品大屁股白浆一区二区 | 国产欧美精品一区 | 国产欧美日产久久 | 国产一区在线视频 | 99ri精品国产亚洲 | 国产v日韩v欧洲v精品 | 国产亚洲日韩a欧美在线 | 国产福利在线观看永久视频 | 国产精品毛片在线大全 | 国产午夜成人无码免费看不卡 | 国产精品欧美日韩区二区 | 国产超碰在线观看 | 成人在线观看一级毛片 | 国产成人综合亚洲专区 | 高潮呻吟久久av无码 | 国产精品无码无卡a级毛片 国产精品无码无卡毛 | 91麻豆成人精品国产免费网站 | 国产精品每日更新在线观看 | 91精品伊人久久久大香线蕉91 | 国产精品一级片 | 高潮抽搐潮喷毛片在线播放 | 国产一区二区视频在线观看 | 91麻豆国产免费 | 18黑白丝水手服自慰喷水网站 | 精品国产一区二区三区av麻豆 | 18禁欧美猛交xxxxx无码 | 国产成人av大片在线播放 | 国产福利一区二区三区在线视频 | 高清日韩精品一区二区三区 | 国产精品免费大 | 国产成人精品无码免费看夜聊软件 | 91一区在线观看免费完整 | 成人免费v片在线观看 | 大尺码无码小黄片在线免费观看 | 国产高清重口变态sm在线观看 |