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 安全测试 ![Python](https://img.shields.io/badge/Python-3.x-blue) ![FastAPI](https://img.shields.io/badge/FastAPI-Backend-green) ![Security Testing](https://img.shields.io/badge/Security-Testing-red) ![OWASP ISVS](https://img.shields.io/badge/OWASP-ISVS-orange) ![GitHub Repo stars](https://img.shields.io/github/stars/Suraj-Tirumali/iot-api-security-testing-isvs?style=social) 基于 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, 后端开发, 安全合规, 密码策略, 授权验证, 无后门, 暴力破解防护, 测试用例, 渗透测试模拟, 物联网, 网络代理, 资源管理, 逆向工具