DavidThomas01/comp0016_avanade_prompt_injection
GitHub: DavidThomas01/comp0016_avanade_prompt_injection
一个专注于大语言模型提示词注入攻防技术研究的学术项目,由Avanade赞助支持。
Stars: 0 | Forks: 0
## Prompt Injection 防护平台
这是一个用于探索 prompt 注入漏洞、了解缓解措施以及测试 LLM 系统抵御注入攻击能力的教育性 Web 应用。使用 React 和 FastAPI 构建。
### 架构
```
graph LR
Browser["React SPA (Vite)"] -->|REST / SSE| API["FastAPI backend"]
API --> DB["SQLite"]
API --> LLM["LLM providers (OpenAI, Anthropic, OpenAI‑compatible)"]
```
- **Frontend**:单页 React 应用。
- 漏洞目录和详情。
- 缓解措施库。
- 用于针对 LLM 运行 prompt 的测试工作台。
- Prompt 增强工具。
- 安全知识助手(聊天)。
- **Backend**:FastAPI 服务。
- 将测试和 prompt 增强存储在 SQLite 中。
- 通过 provider router 路由所有 LLM 调用。
- 分析响应的注入风险。
### 前置条件
- Node.js ≥ 18(npm 或 pnpm)
- Python ≥ 3.10
### 快速开始
#### Backend 设置
#### 1. 进入 backend
```
cd backend
```
#### 2. 创建虚拟环境
```
python -m venv .venv
```
#### 3. 激活虚拟环境
**macOS / Linux**
```
source .venv/bin/activate
```
**Windows**
```
.venv\Scripts\activate
```
#### 4. 安装依赖
```
pip install -e ".[dev]"
```
#### 5. 配置环境变量
```
cp .env.example .env
```
将你的 Azure AI Foundry endpoint 和 API key 添加到 `.env` 文件中。
#### 6. 启动 backend 服务器
```
PYTHONPATH=src uvicorn main:app --reload --port 8080
```
#### Frontend 设置(在单独的终端中运行)
#### 1. 进入 frontend
```
cd frontend
```
#### 2. 安装依赖
```
npm install
```
#### 3. 启动开发服务器
```
npm run dev
```
Frontend 访问地址:http://localhost:5173
- Backend REST 及文档:http://localhost:8080(Swagger 位于 `/docs`)
- Frontend SPA:http://localhost:5173
- 默认 API base:`http://localhost:8080/api`(可通过 `VITE_API_BASE` 配置)。
### 项目结构
```
.
├── frontend/ → React + Vite + Tailwind + shadcn/ui
│ └── src/app/
│ ├── pages/ # One component per route
│ ├── data/ # Vulnerabilities, mitigations, test presets
│ ├── components/ui/ # shadcn/ui primitives
│ ├── api/ # API client functions
│ ├── assistant/ # Chat widget + streaming client
│ ├── types/ # Shared TypeScript types
│ └── lib/pdf/ # PDF export templates
│
├── backend/ → FastAPI + SQLite
│ └── src/
│ ├── main.py # FastAPI app entry point
│ ├── container.py # Dependency injection wiring
│ ├── api/ # Routes + Pydantic schemas
│ ├── app/ # Application services
│ ├── domain/ # Core domain (providers, tests, knowledge, prompt)
│ └── infra/ # Config, DB, providers, runners, analyzers
│
├── FEATURES.md # Extra UX / feature highlights
└── backend/ARCHITECTURE.md # Backend internals and flows
```
### 核心流程
- **测试 prompt**
- 用户在 frontend 测试页面配置测试。
- Frontend 调用 `POST /api/tests`,然后调用 `POST /api/tests/:id/run`。
- Backend 解析模型和 runner,应用缓解措施,调用 LLM,运行分析并存储结果。
- Frontend 展示测试运行情况和风险评分。
- **Prompt 增强**
- 用户提交 system prompt 并选择缓解措施。
- Frontend 调用 `POST /api/prompt‑enhancements`。
- Backend 运行三阶段 pipeline(改进 → 添加前置缓解措施 → 验证)并存储最终结果。
- Frontend 展示原始、改进后的以及增强的 prompt 和判定结论。
- **安全助手聊天**
- 用户打开聊天并发送问题。
- Frontend 向 `POST /api/chat` 开启 SSE 流。
- Backend 搜索知识库,增强消息,调用 LLM,并以流式传输返回 token。
更多详情:
- Frontend:参见 `frontend/README.md`。
- Backend:参见 `backend/README.md` 和 `backend/ARCHITECTURE.md`。
标签:AV绕过, DLL 劫持, FastAPI, React, Syscalls, Web应用, 大语言模型, 安全测试, 攻击性安全, 自动化攻击