sneha-nina/FraudShield

GitHub: sneha-nina/FraudShield

基于 Spring Boot 和 Kafka Streams 构建的实时金融欺诈检测系统,通过事件驱动的流处理和规则引擎即时识别大额、高频及位置异常等可疑交易。

Stars: 1 | Forks: 0

# FraudShield 一个使用 Spring Boot 和 Apache Kafka 构建的实时欺诈检测系统。 通过事件驱动的流处理和基于规则的欺诈分析,在发生时即时检测可疑的金融交易。 ## 功能介绍 FraudShield 接收实时交易事件,对连续的数据流应用欺诈检测规则,并为可疑活动生成即时警报。 它专注于三种核心欺诈模式,这些模式很难通过批处理捕获——这使得实时流处理变得不可或缺。 ## 系统架构 ``` POST /api/transactions ↓ TransactionController — receives transaction via REST API ↓ TransactionProducer — publishes to Kafka transactions topic ↓ FraudDetectionStream — evaluates all fraud rules ├── Rule 1: Large Transaction ├── Rule 2: Rapid Transactions └── Rule 3: Location Anomaly ↓ fraud-alerts topic ↓ FraudAlertConsumer — receives and logs fraud alerts ``` ## 欺诈检测规则 **规则 1 — 大额交易** 标记任何超过配置金额阈值(默认:10,000)的交易。 无状态——针对每笔交易独立进行评估。 **规则 2 — 高频交易** 使用滑动窗口算法检测可疑的交易速度。 标记在 60 秒内进行 5 次或更多交易的用户。 使用冷却机制在同一波突发中抑制重复警报。 **规则 3 — 位置异常** 检测连续交易之间的不可能移动。 使用 Haversine 公式计算两个位置之间的移动速度。 如果所需速度超过 900 公里/小时(商业航班速度),则该交易被标记为物理上不可能。 ## 技术栈 - Java 21 - Spring Boot 3.4.1 - Apache Kafka 4.2.0(KRaft 模式 — 无需 Zookeeper) - Kafka Streams - Maven ## 本地运行 **1. 启动 Kafka** ``` # 设置 heap options 以绕过 Windows 11 上的 wmic 问题 set KAFKA_HEAP_OPTS=-Xmx1G -Xms1G # 在 KRaft 模式下启动 Kafka D:\Kafka\bin\windows\kafka-server-start.bat D:\Kafka\config\server.properties ``` **2. 创建 Topics** ``` kafka-topics.bat --create --topic transactions --bootstrap-server localhost:9092 --partitions 3 --replication-factor 1 kafka-topics.bat --create --topic fraud-alerts --bootstrap-server localhost:9092 --partitions 3 --replication-factor 1 ``` **3. 运行应用程序** ``` mvn spring-boot:run ``` ## 4. 模拟交易 打开 Swagger UI: ``` http://localhost:8080/swagger-ui/index.html ``` 使用 `POST /api/transactions` 测试欺诈场景。 ### 正常交易 ``` { "userId": "user1", "amount": 500.00, "location": "Delhi" } ``` ### 大额交易欺诈 ``` { "userId": "user1", "amount": 15000.00, "location": "Delhi" } ``` ### 位置异常欺诈 在之前的请求之后立即运行。 ``` { "userId": "user1", "amount": 200.00, "location": "Dubai" } ``` 检查: - 应用程序日志 - `fraud-alerts` Kafka topic ## 配置 所有欺诈规则阈值均可在 `application.yml` 中进行配置: ``` fraud: rules: large-transaction-threshold: 10000.00 velocity-transaction-count: 5 velocity-window-seconds: 60 ``` ## 项目结构 ``` src/main/java/com/example/fraud_detection_system/ ├── config/ — Kafka topic configuration ├── controller/ — REST API for transaction ingestion ├── model/ — Transaction and FraudAlert data models ├── producer/ — Publishes transactions to Kafka ├── streams/ — Kafka Streams fraud detection pipeline ├── rules/ — Isolated fraud rule implementations └── consumer/ — Consumes and handles fraud alerts ``` ## 未来改进 - 风险评分引擎——加权评分而非二元判定欺诈/非欺诈(已完成) - 基于 Redis 的行为状态——跨会话跟踪用户历史记录 - 额外规则——商户异常、设备指纹识别、撞库检测 - 用于欺诈指标的 Prometheus + Grafana 仪表盘 - 基于机器学习的异常检测
标签:Apache Kafka, Kafka Streams, KRaft, Maven, REST API, Spring Boot, TCP/UDP协议, 事件驱动架构, 云计算, 位置异常分析, 反欺诈, 哈弗辛公式, 域名枚举, 大额交易监控, 实时交易监控, 异地登录检测, 异常检测, 欺诈检测, 流处理, 滑动窗口算法, 漏洞验证, 网络安全, 网络测绘, 规则引擎, 软件成分分析, 速度计算, 金融科技, 隐私保护, 风险控制, 高频交易拦截