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协议, 事件驱动架构, 云计算, 位置异常分析, 反欺诈, 哈弗辛公式, 域名枚举, 大额交易监控, 实时交易监控, 异地登录检测, 异常检测, 欺诈检测, 流处理, 滑动窗口算法, 漏洞验证, 网络安全, 网络测绘, 规则引擎, 软件成分分析, 速度计算, 金融科技, 隐私保护, 风险控制, 高频交易拦截