Suraj-Tirumali/iot-api-security-testing-isvs
GitHub: Suraj-Tirumali/iot-api-security-testing-isvs
基于FastAPI和OWASP ISVS标准的IoT API安全测试框架,提供完整的后端实现与自动化安全测试脚本。
Stars: 1 | Forks: 0
# 使用 FastAPI 和 OWASP ISVS 进行 IoT API 安全测试





基于 FastAPI 的后端 API,包含符合 **OWASP IoT Security Verification Standard (ISVS)** 的自动化安全测试。
本项目演示了针对 IoT 资源管理系统的认证验证、授权执行、密码策略测试、暴力破解攻击模拟以及速率限制验证。
## 概述
本仓库演示了用于管理用户和 IoT 资源的后端 API 的开发和安全测试。后端使用 **FastAPI** 和 **PostgreSQL** 构建,安全测试基于 **OWASP IoT Security Verification Standard (ISVS)** 进行。
该项目侧重于验证 IoT 生态系统内的认证机制、授权控制、密码管理策略以及资源身份管理。
在本项目中,**资源代表模拟 IoT 后端环境中的 IoT 设备或连接资产**。使用“资源”一词作为通用抽象,旨在保持实现的可复用性,同时模拟常见的 IoT 设备管理场景。
本仓库包含:
- FastAPI 后端实现
- 自动化 API 安全测试脚本
- OWASP ISVS 控制项映射
- 安全测试文档和报告
## 技术栈
- Python
- FastAPI
- PostgreSQL
- JWT Authentication
- Postman
- 自定义 Python API 测试脚本
## 测试方法
安全测试使用自动化 Python 脚本进行,模拟针对 API endpoint 的真实攻击场景。
测试执行旨在根据 OWASP ISVS 指南验证认证流程、访问控制机制、密码策略和资源身份执行情况。
## 项目结构
```
iot-api-security-testing-isvs
│
├── backend
│ ├── app
│ │ ├── manager.py
│ │ ├── database.py
│ │ ├── resource.py
│ │ ├── limiter_config.py
│ │ ├── main.py
│ │ ├── models.py
│ │ ├── schemas.py
│ │ ├── user.py
│ │ └── utils.py
│ │
│ ├── postman_client.py
│ ├── FastAPI.postman_collection.json
│ └── requirements.txt
│
├── security_tests
│ ├── authorization_test.py
│ ├── password_policy_test.py
│ ├── manager_password_change_test.py
│ ├── resource_identity_test.py
│ └── isvs_security_tests.py
│
├── documentation
│ ├── isvs_mapping.md
│ └── security_test_report.md
│
└── README.md
```
## 后端 API
后端提供了管理用户和 IoT 资源所需的核心功能。
### 核心功能
- 用户注册和认证
- 基于 JWT 的认证令牌
- 资源注册和管理
- 管理员资源控制
- 密码管理
- 资源所有权可追溯性
### API 路由
| Router | Description |
|------|-------------|
| `/user` | 用户认证和密码管理 |
| `/resource` | 资源注册和所有权验证 |
| `/manager` | 管理员资源和用户管理 |
FastAPI 自动生成交互式 API 文档 (Swagger UI),访问地址:
## 安全测试
进行安全测试旨在根据常见的 API 安全漏洞验证后端。
测试涵盖:
- 认证验证
- 授权执行
- 密码策略执行
- 资源身份验证
- 暴力破解攻击模拟
- 速率限制验证
开发的自定义 Python 脚本用于自动化这些安全测试场景。
## OWASP ISVS 合规性
安全测试遵循 **OWASP IoT Security Verification Standard (ISVS)**。
测试侧重于 **Section 2.1 – User Space Application Requirements**。
### 实施的控制项
| ISVS Control | Description |
|--------------|-------------|
| 2.1.1 | 唯一用户标识 |
| 2.1.2 | 唯一资源标识 |
| 2.1.3 | 强认证执行 |
| 2.1.4 | 认证框架验证 |
| 2.1.5 | 密码安全验证 |
| 2.1.6 | 安全密码更改 |
| 2.1.7 | 密码重用预防 |
| 2.1.8 | 管理员密码验证 |
| 2.1.9 | 暴力破解攻击防护 |
| 2.1.10 | 资源身份完整性 |
测试脚本与 ISVS 控制项之间的详细映射位于:
`documentation/isvs_mapping.md`
## 安全测试报告
完整的安全测试报告位于:
`documentation/security_test_report.md`
报告包括:
- 测试目标
- 测试方法
- 安全测试类别
- 暴力破解攻击模拟结果
- 速率限制验证
- 安全评估摘要
## 安全测试示例
### 认证测试
- 有效登录尝试
- 无效凭据尝试
- 在无认证令牌的情况下访问受保护的 endpoint
### 授权测试
- 未授权资源访问尝试
- 跨用户数据访问验证
### 资源身份验证
- 重复资源注册测试
- 资源所有权验证
### 暴力破解模拟
使用密码列表执行自动化登录尝试,以模拟凭据暴力破解攻击。
### 速率限制验证
在短时间间隔内生成多次登录尝试,以验证认证 endpoint 上的速率限制行为。
## 运行后端
安装依赖:
```
pip install -r requirements.txt
```
运行 FastAPI 服务器:
```
uvicorn app.main:app --reload
```
服务器启动后,访问交互式 API 文档:
## 环境变量
本项目需要多个环境变量。
根据提供的 `.env.example` 文件在项目根目录创建一个 `.env` 文件。
示例:
```
cp .env.example .env
```
然后根据您的环境更新 `.env` 中的值。
必需的变量包括:
- `SECRET_KEY` – JWT 签名密钥
- `MANAGER_SECRET_KEY` – manager JWT 密钥
- `TWILIO_ACCOUNT_SID` – Twilio account SID
- `TWILIO_AUTH_TOKEN` – Twilio authentication token
- `TWILIO_WHATSAPP_FROM` – Twilio WhatsApp 发送方
- `TWILIO_TEMPLATE_SID` – WhatsApp template ID
- `ROCKYOU_PATH` – rockyou 密码列表路径
## 主要学习成果
本项目展示了以下方面的实践经验:
- 使用 FastAPI 进行后端 API 开发
- REST API 的安全测试
- 认证和授权验证
- 暴力破解攻击模拟
- 速率限制实施测试
- OWASP IoT Security Verification Standard (ISVS) 合规性测试
- 使用 Python 脚本进行自动化 API 测试
## 许可证
本项目仅用于教育和演示目的。
## 作者
**Suraj Tirumali**
本项目是对后端 API 安全测试和 OWASP IoT Security Verification Standard (ISVS) 合规性的实践探索。
标签:API安全测试, AV绕过, CISA项目, FastAPI, IoT安全, JWT, OWASP ISVS, PostgreSQL, Python, 后端开发, 安全合规, 密码策略, 授权验证, 无后门, 暴力破解防护, 测试用例, 渗透测试模拟, 物联网, 网络代理, 资源管理, 逆向工具