FrannnnDev/RiskEngine-JS

GitHub: FrannnnDev/RiskEngine-JS

基于行为分析的JavaScript反滥用与反作弊引擎,通过统计异常检测和多层风险评分为Web应用和API提供实时自适应安全防护。

Stars: 27 | Forks: 0

# RiskEngine-JS **面向 JavaScript 应用的高级基于行为的反滥用与反作弊引擎** [![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/yourusername/RiskEngine-JS/blob/main/LICENSE) [![JavaScript Version](https://img.shields.io/badge/javascript-%3E%3D4.0-blue)](https://developer.mozilla.org/en-US/docs/Web/JavaScript) [![Node.js Version](https://img.shields.io/badge/node-%3E%3D14.0-green)](https://nodejs.org/ ## 🚀 **概述** RiskEngine-JS 是一个**尖端的基于行为的安全系统**,旨在保护您的 Web 应用程序、API 和实时系统免受滥用、作弊和自动化攻击。通过使用**统计分析、异常检测和机器学习技术**分析用户行为模式,RiskEngine 动态计算风险评分并应用**自适应缓解策略**,以保持您的平台安全。 ### **核心功能** ✅ **多层风险评分** – 结合行为分析、模式检测、速率限制和设备指纹识别 ✅ **自适应缓解** – 通过可配置的风险阈值自动适应新威胁 ✅ **实时保护** – 与 Express.js 及其他 Web 框架无缝集成 ✅ **行为分析** – 检测用户交互模式中的异常 ✅ **设备与会话跟踪** – 识别可疑的设备行为和会话异常 ✅ **速率限制与节流** – 防止暴力破解攻击和 API 滥用 ✅ **Bot 与自动化检测** – 使用熵分析和指纹识别来检测 Bot ✅ **威胁情报集成** – 内置已知恶意模式黑名单 ✅ **可扩展架构** – 模块化设计,易于定制和集成 ### **适用人群** - **Web 应用程序开发者** – 保护您的应用免受自动化攻击 - **API 提供商** – 通过动态速率限制保护您的端点 - **电子商务平台** – 防止欺诈和支付滥用 - **游戏开发者** – 实时检测并阻止作弊行为 - **社交媒体与社区网站** – 防止垃圾信息和滥用 - **安全团队** – 为您的基础设施添加额外保护层 ## ✨ **功能详解** ### **1. 高级行为分析** - **统计异常检测** – 识别异常的用户行为模式 - **基于熵的自动化检测** – 检测脚本交互 - **时间序列分析** – 分析用户活动节奏和序列 ### **2. 模式检测引擎** - **暴力破解检测** – 阻止重复的登录尝试 - **API 滥用防护** – 限制过度的 API 调用 - **爬虫与抓取检测** – 识别自动化数据采集 - **账户盗用防护** – 检测可疑的密码重置模式 ### **3. 速率限制与节流** - **自适应速率限制** – 根据用户行为调整限制 - **突发流量保护** – 防止请求量突然激增 - **惩罚与奖励系统** – 惩罚滥用用户,奖励良好用户 ### **4. 设备与会话跟踪** - **设备指纹识别** – 创建唯一的设备签名 - **会话异常检测** – 识别可疑的会话行为 - **设备信任评分** – 根据可信度对设备进行排名 ### **5. 威胁情报** - **Bot User-Agent 黑名单** – 阻止已知的 Bot - **可疑模式检测** – 标记恶意 Payload - **地理位置与 ASN 风险评分** – 基于位置和网络评估风险 ### **6. 中间件集成** - **Express.js 中间件** – 轻松集成到现有应用中 - **可定制的风险决策** – 定义您自己的缓解策略 - **实时风险标头** – 将风险评分传递给您的应用程序 ## 🛠️ **技术栈** | 类别 | 所用技术 | |------------------|--------------------------------------------| | **语言** | JavaScript (ES6+) | | **框架** | Express.js (用于中间件集成) | | **依赖项** | `uuid` (用于生成唯一标识符) | | **数据存储** | 内存存储 (支持 TTL) | | **数学库** | 自定义统计和熵计算器 | ### **系统要求** - **Node.js** ≥ 14.0 - **npm** 或 **yarn** 用于包管理 - **Express.js** (用于中间件集成) ## 📦 **安装** ### **前置条件** 确保您已安装 Node.js: ``` node -v # Should be ≥ 14.0 npm -v # Should be ≥ 6.0 ``` ### **快速开始** 1. **克隆仓库:** git clone https://github.com/decentholograms/RiskEngine-JS.git cd RiskEngine-JS 2. **安装依赖:** npm install 3. **运行演示服务器:** npm start 服务器将在 `http://localhost:3000` 上启动。 4. **访问演示端点:** - `/health` – 健康检查端点 - `/metrics` – 风险引擎统计信息 - `/api/users` – 受保护的端点示例 ## 🎯 **使用示例** ### **1. 与 Express.js 的基本集成** ``` import express from 'express'; import RiskEngine from 'risk-engine-js'; import createAntiAbuseMiddleware from 'risk-engine-js/middleware/antiAbuse'; const app = express(); const PORT = 3000; // Initialize RiskEngine with custom thresholds const riskEngine = new RiskEngine({ thresholds: { low: 0.25, medium: 0.5, high: 0.7, critical: 0.9 }, weights: { behavior: 0.25, patterns: 0.25, rateLimit: 0.2, fingerprint: 0.15, reputation: 0.15 }, onHighRisk: (decision) => { console.log(`[ALERT] High risk detected for user ${decision.userId}: ${decision.riskScore.toFixed(3)}`); } }); // Create anti-abuse middleware const antiAbuse = createAntiAbuseMiddleware({ engine: riskEngine, trustProxy: true, skipPaths: ['/health', '/metrics'], onDecision: (decision, req, res) => { if (decision.riskScore > 0.5) { console.log(`[RISK] ${req.method} ${req.path} - Score: ${decision.riskScore.toFixed(3)}`); } } }); // Apply middleware to all routes app.use(antiAbuse); // Example protected route app.get('/api/users', (req, res) => { res.json({ users: [{ id: 1, name: 'User 1' }], riskDecision: req.riskDecision ? { score: req.riskDecision.riskScore, level: req.riskDecision.riskLevel } : null }); }); app.listen(PORT, () => { console.log(`Server running on http://localhost:${PORT}`); }); ``` ### **2. 评估用户的风险评分** ``` import RiskEngine from 'risk-engine-js'; const riskEngine = new RiskEngine(); // Simulate a request object const request = { ip: '192.168.1.1', userId: 'user123', method: 'GET', path: '/api/users', headers: { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' } }; // Evaluate the risk async function evaluateRisk() { const decision = await riskEngine.evaluate(request); console.log('Risk Decision:', decision); // Output: { riskScore: 0.12, riskLevel: 'low', action: { type: 'allow' } } } evaluateRisk(); ``` ### **3. 自定义风险阈值** ``` const riskEngine = new RiskEngine({ thresholds: { low: 0.3, // Allow users with risk < 0.3 medium: 0.6, // Challenge users with risk between 0.3 and 0.6 high: 0.8, // Throttle users with risk between 0.6 and 0.8 critical: 0.9 // Block users with risk ≥ 0.9 }, weights: { behavior: 0.3, // Increase weight for behavior analysis patterns: 0.2, // Decrease weight for pattern detection rateLimit: 0.25, // Increase weight for rate limiting fingerprint: 0.15, // Keep fingerprint weight the same reputation: 0.1 // Decrease weight for reputation } }); ``` ## 📁 **项目结构** ``` RiskEngine-JS/ ├── src/ │ ├── core/ # Core risk analysis components │ │ ├── RiskEngine.js # Main risk engine class │ │ ├── BehaviorAnalyzer.js │ │ ├── PatternDetector.js │ │ ├── RateLimiter.js │ │ ├── Fingerprinter.js │ │ ├── AnomalyDetector.js │ │ ├── ThreatIntelligence.js │ │ ├── SessionTracker.js │ │ └── VelocityChecker.js │ ├── middleware/ # Express middleware │ │ └── antiAbuse.js │ ├── storage/ # Data storage implementations │ │ └── MemoryStore.js │ ├── utils/ # Utility functions │ │ ├── MathUtils.js │ │ ├── EntropyCalculator.js │ │ └── TimeSeriesAnalyzer.js │ └── index.js # Main exports ├── server.js # Demo server ├── package.json ├── README.md # This file └── LICENSE # MIT License ``` ## 🔧 **配置** ### **环境变量** RiskEngine-JS 可以通过环境变量进行配置,以便于部署: | 变量 | 描述 | 默认值 | |--------------------------|----------------------------------------------|---------------| | `RISK_ENGINE_THRESHOLDS` | 风险阈值的 JSON 字符串 | `{ "low": 0.3, "medium": 0.5, "high": 0.7, "critical": 0.9 }` | | `RISK_ENGINE_WEIGHTS` | 风险因子权重的 JSON 字符串 | `{ "behavior": 0.25, "patterns": 0.25, "rateLimit": 0.2, "fingerprint": 0.15, "reputation": 0.15 }` | | `RISK_ENGINE_RATE_LIMIT` | 速率限制设置的 JSON 字符串 | `{ "defaultLimit": 100, "windowSize": 60000, "burstMultiplier": 2 }` | 示例: ``` export RISK_ENGINE_THRESHOLDS='{"low": 0.2, "medium": 0.5, "high": 0.8, "critical": 0.95}' export RISK_ENGINE_WEIGHTS='{"behavior": 0.3, "patterns": 0.2, "rateLimit": 0.3, "fingerprint": 0.15, "reputation": 0.05}' ``` ### **自定义风险决策** 您可以根据风险评分定义自定义操作: ``` const riskEngine = new RiskEngine({ actions: { allow: { maxScore: 0.4 }, // Allow users with risk < 0.4 challenge: { minScore: 0.4, maxScore: 0.6 }, // Challenge users with risk between 0.4 and 0.6 throttle: { minScore: 0.6, maxScore: 0.8 }, // Throttle users with risk between 0.6 and 0.8 block: { minScore: 0.8, maxScore: 0.95 }, // Block users with risk between 0.8 and 0.95 ban: { minScore: 0.95 } // Ban users with risk ≥ 0.95 } }); ``` ### **开发环境设置** 1. 克隆仓库: git clone https://github.com/decentholograns/RiskEngine-JS.git cd RiskEngine-JS 2. 安装开发依赖: npm install --dev 3. 以监视模式运行开发服务器: npm run dev 4. 运行测试: npm test ### **代码风格指南** - 使用 **ES6+ JavaScript** 特性。 - 遵循**一致的缩进** (2 个空格)。 - 为复杂逻辑编写**清晰、简洁的注释**。 - 确保**代码结构良好**且模块化。 - 使用 **JSDoc** 进行函数和类的文档编写。 ### **Pull Request 流程** 1. 确保您的 PR 描述清楚地解释了更改。 2. 引用任何相关的问题或工单。 3. 如果适用,请包含屏幕截图或示例。 4. 乐于接受反馈并愿意对您的更改进行迭代。 ## 📝 **许可证** RiskEngine-JS 在 **MIT License** 下发布。详情请参阅 [LICENSE](LICENSE) 文件。 ## 👥 **作者** ### **维护者** - **FrannnDev** – [@FrannnDev](https://github.com/decentholograms) (初始开发) ### **致谢** - 灵感来源于机器学习研究中的**统计异常检测**技术。 - 使用 **Express.js** 进行中间件集成。 - 使用**自定义实用程序库**进行数学和统计计算。 ## 🐛 **问题与支持** ### **报告问题** 如果您遇到 Bug 或有功能请求,请: 1. 查看 [GitHub Issues](https://github.com/decentholograms/RiskEngine-JS/issues) 中的现有讨论。 2. 打开一个带有清晰标题和描述的新 Issue。 3. 包含**可重现的步骤**、**错误日志**和**预期行为**。 ### **获取帮助** - **讨论**: 加入我们的 [GitHub Discussions](https://github.com/decentholograms/RiskEngine-JS/discussions) 进行一般性提问。 ### **常见问题** **问: 我可以在生产环境中使用 RiskEngine-JS 吗?** 答: 可以!RiskEngine-JS 专为生产使用而设计,并已通过真实流量的测试。 **问: RiskEngine-JS 支持集群或分布式环境吗?** 答: 目前,RiskEngine-JS 使用内存存储。对于分布式环境,建议使用 Redis 或其他共享存储解决方案。 **问: 如何自定义风险因子?** 答: 您可以在 `weights` 配置对象中调整每个风险因子的权重。 **问: RiskEngine-JS 可以与其他框架集成吗?** 答: 虽然 RiskEngine-JS 是为 Express.js 设计的,但您可以提取核心逻辑并将其与其他框架集成。 ## 🗺️ **路线图** ### **计划中的功能** - **[进行中]** Redis 集成,用于分布式环境 - **[计划中]** 机器学习模型集成 (例如 TensorFlow.js) - **[计划中]** GraphQL 中间件支持 - **[计划中]** 高级威胁情报源 (例如 AbuseIPDB, VirusTotal) - **[计划中]** Docker 和 Kubernetes 部署指南 ### **已知问题** - **问题 #1**: 某些模式检测规则在特定情况下可能会产生误报。 - **问题 #2**: 内存存储可能不适用于高流量应用 (Redis 集成将解决此问题)。 ### **未来改进** - **增强的 Bot 检测**: 添加更复杂的 Bot 检测技术。 - **行为学习**: 允许引擎随着时间推移学习并适应新的用户行为。 - **性能优化**: 降低高吞吐量应用程序的延迟。 ## 🚀 **立即开始!** RiskEngine-JS 是您防御滥用、作弊和自动化攻击的**第一道防线**。无论您是在保护 Web 应用、API 还是游戏平台,RiskEngine 都能提供随应用程序增长的**实时、自适应安全性**。 🔗 **[GitHub 仓库](https://github.com/decentholograms/RiskEngine-JS)** 💬 **[加入讨论](https://github.com/decentholograms/RiskEngine-JS/discussions)**
标签:Apex, API安全, API网关安全, Bot检测, C2日志可视化, CISA项目, CMS安全, Express中间件, GNU通用公共许可证, IP 地址批量处理, JavaScript, JSON输出, MITM代理, Node.js, Web安全, 人机验证, 会话追踪, 作弊检测, 反作弊, 反欺诈, 反滥用, 威胁情报, 安全引擎, 实时系统, 开发者工具, 异常检测, 指纹识别, 数据可视化, 机器学习, 模式识别, 流量清洗, 游戏安全, 熵分析, 电商安全, 统计分析, 网络安全, 自动化攻击防御, 自定义脚本, 自适应缓解, 蓝队分析, 设备指纹, 账号安全, 金融科技安全, 防御恶意软件, 防止暴力破解, 隐私保护, 风控系统, 风险控制, 风险评分