/** * IP黑名单管理 * 用于阻止已知的攻击者IP */ // 已知的攻击者IP列表 const BLOCKED_IPS = [ "193.142.147.209", // 恶意命令执行的攻击者IP "94.154.35.154", // 恶意脚本服务器IP "45.172.152.74", // SSH暴力破解IP "181.46.131.55", // SSH暴力破解IP "220.80.223.144", // SSH暴力破解IP "181.104.58.194", // SSH暴力破解IP "185.141.132.26", // SSH暴力破解IP "80.253.31.232", // SSH暴力破解IP "167.99.49.89", // SSH暴力破解IP "128.199.168.119", // SSH暴力破解IP "83.142.209.191", // SSH暴力破解IP "171.244.141.86", // SSH暴力破解IP ]; /** * 检查IP是否在黑名单中 */ export function isBlockedIP(ip: string | null): boolean { if (!ip) return false; // 检查精确匹配 if (BLOCKED_IPS.includes(ip)) { return true; } // 检查IP段(如果需要) // 例如:192.168.1.0/24 return false; } /** * 获取客户端真实IP */ export function getClientIP(request: Request): string | null { // 从请求头中获取真实IP(考虑代理情况) const forwarded = request.headers.get("x-forwarded-for"); if (forwarded) { // x-forwarded-for可能包含多个IP,取第一个 const ips = forwarded.split(",").map(ip => ip.trim()); return ips[0] || null; } const realIP = request.headers.get("x-real-ip"); if (realIP) { return realIP; } return null; }