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应用, 大语言模型, 安全测试, 攻击性安全, 自动化攻击