anuragsamota/prompt_injection_demo
GitHub: anuragsamota/prompt_injection_demo
一个交互式Web演示项目,展示了LLM应用中的提示词注入攻击方式和防御机制,用于安全教育和研究。
Stars: 0 | Forks: 1
# 提示词注入演示
一个交互式的 Web 演示项目,展示 LLM 应用中的提示词注入攻击和防御机制。该项目展示了各种提示词注入场景,并实现了检测和缓解此类攻击的安全机制。
## 项目概述
本演示涵盖以下内容:
- **直接提示词注入** - 直接攻击系统提示词
- **间接提示词注入** - 通过不可信内容注入
- **混淆注入** - 使用令牌走私和编码技术
- **防御机制** - 过滤器、验证和安全门控,以防止攻击
该项目提供了一个交互式 UI,可实时探索这些概念。
## 技术栈
### 前端
- **React** 19.2.4 - UI 框架
- **Vite** 8.0.0 - 构建工具和开发服务器,支持 HMR
- **Tailwind CSS** 4.2.1 - 实用优先的 CSS 框架
- **daisyUI** 5.5.19 - 基于 Tailwind 的组件库
- **React Router** 7.13.1 - 客户端路由
- **React Markdown** 10.1.0 - 模型输出的 Markdown 渲染
- **Lucide React** 0.577.0 - 图标库
- **ESLint** 9.39.4 - 代码检查
- **React Compiler** - 已启用以提升性能
### 后端
- **Python** 3.11+ - 运行时环境
- **Flask** 3.1.1 - Web 框架
- **Requests** 2.32.4 - Ollama 代理和流式客户端
- **python-dotenv** 1.1.1 - 环境配置
## 项目结构
```
prompt_injection_demo/
├── backend/ # Python/Flask backend
│ ├── app.py # Flask entry point
│ └── requirements.txt # Backend dependencies
│
└── frontend/
└── prompt_injection_demo_frontend/ # React/Vite frontend
├── src/
│ ├── main.jsx # App entry point
│ ├── index.css # Global styles (Tailwind + daisyUI)
│ ├── app/
│ │ └── AppRouter.jsx # Route definitions
│ ├── components/
│ │ ├── chat/ # Chat UI components
│ │ ├── sidebar/ # Navigation sidebar
│ │ ├── ui/ # Icon components
│ │ └── common/ # Shared components
│ ├── pages/ # Page components
│ ├── layout/ # Layout components
│ ├── services/
│ │ └── chatEngine.js # API communication layer
│ ├── state/
│ │ └── uiContext.jsx # Global UI state management
│ ├── data/
│ │ └── mockData.js # Sample/mock data
│ └── lib/
│ └── utils.js # Utility functions
├── docs/ # Project documentation
│ └── resources/
│ ├── 00_stack_overview.md
│ ├── 01_react_vite_baseline.md
│ ├── 02_styling_tailwind_daisyui.md
│ ├── 03_routing_and_linting.md
│ ├── 04_prompt_injection_ui_considerations.md
│ ├── 05_source_index.md
│ ├── 06_phase1_blueprint.md
│ └── 07_frontend_backend_contract.md
├── public/ # Static assets
├── vite.config.js # Vite configuration
├── eslint.config.js # ESLint configuration
├── package.json # Frontend dependencies
└── pnpm-lock.yaml # Lock file
```
## 前置条件
- **Node.js** 18.x 或更高版本
- **pnpm** 10.32.1 或更高版本(如果未安装,请运行 `npm install -g pnpm`)
- 代码编辑器(推荐 VS Code)
## 设置说明
### 1. 克隆并进入项目目录
```
cd prompt_injection_demo
```
### 2. 安装后端依赖
```
cd backend
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
```
### 3. 安装前端依赖
```
cd ../frontend/prompt_injection_demo_frontend
pnpm install
```
### 4. 环境配置(后端)
在 `backend/` 目录中创建 `.env` 文件:
```
PORT=5000
OLLAMA_BASE_URL=http://127.0.0.1:11434
OLLAMA_MODEL=gemma3:latest
CORS_ORIGIN=http://localhost:5173
```
添加 LLM 集成所需的任何 API 密钥或配置。
## 运行项目
### 选项 1:在不同的终端中运行后端和前端
**终端 1 - 后端:**
```
cd backend
python app.py
```
后端将在 `http://localhost:5000` 启动(或 `.env` 中指定的端口)
**终端 2 - 前端:**
```
cd frontend/prompt_injection_demo_frontend
pnpm run dev
```
前端将在 `http://localhost:5173` 启动(默认 Vite 端口)
### 选项 2:同时运行两者(从根目录)
从根目录,您可以设置一个脚本来同时运行两者:
```
cd backend && pnpm run dev & cd ../frontend/prompt_injection_demo_frontend && pnpm run dev
```
## 开发
### 前端开发
```
cd frontend/prompt_injection_demo_frontend
# 启动开发服务器
pnpm run dev
# 为生产环境构建
pnpm run build
# 预览生产构建
pnpm run preview
# 运行代码检查
pnpm run lint
```
**前端特性:**
- 热模块替换 (HMR) 实现即时 UI 更新
- 已启用 React Compiler 以优化性能
- Tailwind CSS + daisyUI 实现快速组件开发
- React Router 用于多页面场景
### 后端开发
```
cd backend
# 启动开发服务器
python app.py
# 如有需要,在生产 WSGI 服务器后运行
# gunicorn -b 0.0.0.0:5000 app:app
```
**后端特性:**
- Flask 路由和中间件风格的钩子
- SSE 流式代理到 Ollama
- 基于环境的配置
## 前端架构
### 状态管理
- **UIContext** (`src/state/uiContext.jsx`) - 使用 React Context API 的全局 UI 状态
- **Persistence** (`src/state/persistence.js`) - 状态持久化工具
### 聊天引擎
- **chatEngine.js** - 处理与后端的通信和流式响应
- 提供 `sendMessage` 和 `stopStreaming` 方法用于消息处理
### 页面
- **ChatPage** - 包含攻击/防御的主聊天界面
- **SampleScenarioPage** - 预定义的提示词注入场景
- **SamplesPage** - 示例演示
### 工具组件
- **SystemPromptPanel** - 查看和编辑系统提示词
- **ConsolePanel** - 显示调试信息和输出
- **MarkdownMessage** - 使用 markdown 格式渲染模型响应
## 后端 API 契约
前端通过 [前端-后端契约](frontend/prompt_injection_demo_frontend/docs/resources/07_frontend_backend_contract.md) 中定义的 REST/流式 API 与后端通信。
已实现的端点:
- `GET /health` - 后端和 Ollama 状态
- `GET /api/connection` - 详细的 Ollama 连接检查
- `POST /api/chat` - 发送消息并获取响应
- `POST /api/chat/stream` - 将助手响应作为 SSE 流式传输
## 样式
该项目使用 **Tailwind CSS 4** 和 **daisyUI 5** 进行组件样式设计:
- 全局样式在 `src/index.css` 中
- 通过 Tailwind 类实现组件级工具类
- daisyUI 主题变量确保设计一致性
- 避免使用自定义简写令牌;请使用 Tailwind 任意值(例如 `max-w-[1860px]`)
更多详情请参阅 [Tailwind + daisyUI 文档](frontend/prompt_injection_demo_frontend/daisyui_llms_docs.md)
## 项目文档
详细文档可在 [docs/resources](frontend/prompt_injection_demo_frontend/docs/resources) 目录中获取:
- **00_stack_overview.md** - 技术栈和项目架构
- **01_react_vite_baseline.md** - React + Vite 设置详情
- **02_styling_tailwind_daisyui.md** - 样式方法和指南
- **03_routing_and_linting.md** - 路由和代码质量设置
- **04_prompt_injection_ui_considerations.md** - 安全 UX 模式
- **05_source_index.md** - 文件结构和组件清单
- **06_phase1_blueprint.md** - 第一阶段实施计划
- **07_frontend_backend_contract.md** - 前端和后端之间的 API 契约
## 常见任务
### 添加新组件
```
cd frontend/prompt_injection_demo_frontend
pnpm dlx shadcn@latest add @lucide-animated/
```
然后从 `src/components/ui/` 导入
### 为生产环境构建前端
```
cd frontend/prompt_injection_demo_frontend
pnpm run build
```
输出将在 `dist/` 目录中
### 检查前端代码
```
cd frontend/prompt_injection_demo_frontend
pnpm run lint
```
## 后续步骤/路线图
1. 实现后端 API 端点
2. 集成 LLM 提供商 API(OpenAI、Anthropic 等)
3. 构建提示词注入检测逻辑
4. 创建安全过滤管道
5. 添加审计日志和监控
6. 实现基于场景的演示
7. 添加教育内容和说明
## 安全注意事项
这是一个用于教育目的的**演示项目**。在生产环境中实施提示词注入安全时:
- 永远不要在没有验证的情况下信任用户输入
- 实施严格的输入/输出过滤
- 为不可信内容使用单独的执行环境
- 记录和监控所有用户交互
- 遵循 OWASP LLM 安全指南
- 定期进行安全审计
## 故障排除
### 端口已被占用
如果端口 5000(后端)或 5173(前端)已被占用:
```
# 查找并终止端口上的进程 (Linux/Mac)
lsof -i :5000 # for backend
lsof -i :5173 # for frontend
# 更新 .env 中的后端端口
PORT=5001
```
### pnpm 锁文件问题
```
# 重新安装依赖
rm pnpm-lock.yaml
pnpm install
```
### Vite HMR 问题
清除 Vite 缓存:
```
rm -rf frontend/prompt_injection_demo_frontend/node_modules/.vite
```
## 许可证
[在此添加您的许可证]
## 联系方式
[在此添加联系信息或团队详情]
**最后更新:** 2026 年 3 月
**状态:** 开发中
标签:AI安全, AI对抗, AI风险缓解, API密钥检测, Chat Copilot, DLL 劫持, Flask, Obfuscated Injection, Python, React, Syscalls, Tailwind CSS, Vite, Web安全, 后端开发, 后门攻击, 大语言模型, 安全演示, 对抗性AI, 提示词工程, 无后门, 策略决策点, 网络安全, 蓝队分析, 输入验证, 逆向工具, 间接注入, 隐私保护