MosiaThabangEphraim/securebank
GitHub: MosiaThabangEphraim/securebank
一个带可自定义实时欺诈检测功能的全栈数字银行应用,让用户能自行配置交易规则并即时评分。
Stars: 0 | Forks: 0
# SecureBank
一个全栈数字银行 Web 应用程序,带有可自定义的实时欺诈检测功能。用户可以配置自己的规则——速度限制、消费上限、异常时段、重复检测——并且每笔交易都会即时评分。使用 React、.NET 10 和 Supabase 构建。
# 在线演示
## https://securebank-mosiathabangephraims-projects.vercel.app
## 注意:后端运行在 Render 的免费套餐上。如果 API 超过 15 分钟未被使用,它将会休眠——第一次请求可能需要 30-50 秒来唤醒它。后续的请求会很快。
## 入门指南
- 创建账户
- 在登录页面点击“Create account”
- 填写您的详细信息并点击“Create Account”
- 检查您的邮箱以获取确认链接——在登录前点击它
## 重要提示:这是一个演示应用程序。请勿使用真实的个人信息。您的邮箱可以是真实的——仅用于登录认证。显示的任何金额都是虚构的,没有现实世界的价值。
## 测试应用程序
- 添加账户、卡片和收款人
- 提交交易并查看欺诈评分的实际效果
- 在侧边栏的“Fraud Rules”下调整您的欺诈规则
## 部署
| 服务 | 平台 | 备注 |
|---------|----------|-------|
| 前端 | Vercel | 从 `main` 分支自动部署 |
| 后端 API | Render | Docker 容器,免费套餐 |
| 数据库 | Supabase | PostgreSQL + 身份验证 + 实时推送 |
## 架构
### 前端 — React + TypeScript
前端负责处理用户看到和交互的所有内容:
- 多步注册,带有重复邮箱、电话和身份证验证
- 登录、登出和密码重置流程
- 带有实时账户余额和近期交易的仪表盘
- 账户管理——创建、关闭和重新开启账户
- 虚拟卡管理——发卡、锁定、冻结和切换消费控制(非接支付、在线支付、国际支付)
- 向自己的账户或已保存的收款人转账
- 欺诈规则设置——每位用户可配置自己的检测阈值
- 审核区——检查和处理被标记的交易
- 争议门户——报告欺诈并跟踪案例状态和 SLA 截止日期
- 带有声音通知和未读标记的实时提醒面板
- 编辑个人资料、更改密码和管理收款人
### 后端 — .NET 10 ASP.NET Core API
API 是所有业务逻辑和数据操作的核心支柱:
- JWT 身份验证——根据 Supabase 的 RS256 公钥 (JWKS) 验证每一个请求
- 账户——创建、关闭、重新开启和删除账户,并执行余额限制
- 卡片——发卡、更新状态(活跃/锁定/冻结)以及切换消费设置
- 交易——执行转账、执行余额检查、原子性地更新发送方和接收方余额
- 欺诈评分——根据用户配置的规则实时对每笔交易进行评分
- 欺诈案例——开启争议案件、分配案例编号、设定 SLA 截止日期
- 提醒——创建、检索、标记为已读以及全部标记为已读
- 收款人——添加和移除已保存的收款人
- 欺诈偏好——存储和检索每位用户的自定义欺诈检测规则
- 注册可用性检查——在注册前验证邮箱(对照 `auth.users` 检查)、电话和身份证的唯一性
### Supabase
Supabase 负责处理所有需要托管后端服务的功能:
- **Auth**——用户注册、邮箱确认、登录、登出和密码重置
- **Database**——托管所有表(个人资料、账户、卡片、交易、欺诈案例、提醒、收款人、欺诈偏好)的 PostgreSQL 数据库
- **Realtime**——在新提醒插入数据库的瞬间,将其实时推送到前端
- **Storage**——个人资料图片上传
## 技术栈
| 层级 | 技术 |
|---|---|
| 前端 | React 18, TypeScript, Vite, Tailwind CSS |
| 后端 API | .NET 10, ASP.NET Core, Entity Framework Core |
| 数据库 | 通过 Supabase 提供的 PostgreSQL |
| 身份验证 | Supabase Auth (JWT / RS256) |
| 实时通信 | Supabase Realtime (PostgreSQL 更改流) |
## 项目结构
```
SecureBank/
├── SecureBank.API/ # .NET REST API
│ ├── Controllers/ # API endpoints
│ ├── Models/ # Entities and DTOs
│ ├── Services/ # Business logic
│ └── Data/ # EF Core DbContext
│
├── securebank-web/ # React frontend
│ ├── src/
│ │ ├── pages/ # Route pages
│ │ ├── components/ # Reusable UI components
│ │ ├── hooks/ # Custom React hooks
│ │ └── lib/ # API client, utilities
│
└── supabase/ # Supabase config and edge functions
```
## 入门指南
### 前置条件
- [Node.js](https://nodejs.org) 18+
- [.NET SDK](https://dotnet.microsoft.com) 10+
- 一个 [Supabase](https://supabase.com) 项目
### 1. 克隆仓库
```
git clone https://github.com/MosiaThabangEphraim/securebank.git
cd SecureBank
```
### 2. 配置 API
创建 `SecureBank.API/appsettings.Development.json`:
```
{
"ConnectionStrings": {
"DefaultConnection": "Your Supabase PostgreSQL connection string"
},
"Jwt": {
"Secret": "Your JWT secret",
"Issuer": "https://YOUR_PROJECT.supabase.co/auth/v1",
"Audience": "authenticated"
}
}
```
### 3. 运行 API
```
cd SecureBank.API
dotnet run
```
API 运行在 `http://localhost:5093`
### 4. 配置前端
创建 `securebank-web/.env.local`:
```
VITE_SUPABASE_URL=https://YOUR_PROJECT.supabase.co
VITE_SUPABASE_ANON_KEY=your_anon_key
VITE_API_BASE_URL=http://localhost:5093/api
```
### 5. 运行前端
```
cd securebank-web
npm install
npm run dev
```
前端运行在 `http://localhost:5173`
## 安全性
- 密码完全由 Supabase Auth 处理
- 在每次 API 请求时,都会根据 Supabase JWKS 验证 JWT token
- 注册前检查重复的邮箱、电话和身份证
- 除 `/api/auth/check` 外,所有 API 端点都需要身份验证
- 数据库凭据和密钥永远不会被提交到代码仓库中
标签:Docker, FinTech, .NET 10, OSV, PostgreSQL, React, Render, Supabase, Syscalls, TypeScript, Vercel, 争议处理, 云计算, 交易评分, 多包管理, 安全插件, 安全防御评估, 实时欺诈检测, 实时警报, 异常时段检测, 数字银行, 时间线生成, 测试用例, 消费限额, 用户验证, 网络安全, 自动化攻击, 虚拟卡, 规则引擎, 账户管理, 转账, 重复交易检测, 金融科技, 隐私保护