han0g-ng/prompt-injection
GitHub: han0g-ng/prompt-injection
一个演示提示注入攻击与防御的毕业设计项目,结合脆弱与安全 LLM 聊天机器人对比评估。
Stars: 0 | Forks: 0
# 提示注入防御演示(大学毕业论文)
本项目演示以下内容:
- 一个可被提示注入攻击的脆弱 LLM 聊天机器人。
- 使用 PyRIT 进行自动红队评估。
- 对小型语言模型(SLM)防护模型(Llama Prompt Guard 86M)进行微调。
- 使用中间件在提示到达核心 LLM 之前阻断注入的安全聊天机器人。
- 一个现代化的 Web UI,直观展示攻击与防御的对比。
## 项目结构
```
project_root/
├── data/
├── models/
├── src/
│ ├── api/
│ │ ├── vulnerable_app.py
│ │ └── secure_app.py
│ ├── frontend/
│ │ ├── index.html
│ │ ├── style.css
│ │ └── script.js
│ └── training/
│ └── train_guard.py
├── eval/
│ ├── attack_vulnerable.py
│ └── attack_secure.py
├── requirements.txt
└── README.md
```
## 1. 本地环境设置
1. 创建并激活虚拟环境:
```
python -m venv .venv
.\.venv\Scripts\Activate.ps1
```
2. 安装依赖:
```
pip install -r requirements.txt
```
3. 为脆弱应用设置 OpenAI API 密钥:
```
$env:OPENAI_API_KEY="your_openai_api_key"
```
4. 运行预检(推荐):
```
python src\api\preflight_check.py
```
## 2. 里程碑 1:脆弱应用 + Web UI
运行脆弱后端:
```
python src\api\vulnerable_app.py
```
可选模型覆盖:
```
$env:OPENAI_MODEL="gpt-4o-mini"
```
打开用户界面:
- http://localhost:8000
API 端点:
- POST http://localhost:8000/api/chat
- 请求体:`{ "message": "..." }`
## 3. 里程碑 2:基线 PyRIT 评估
在新的终端中运行(脆弱应用保持运行):
```
python eval\attack_vulnerable.py
```
预期结果:
- 脚本打印基线攻击成功率(ASR)。
- PyRIT 内存 SQLite 数据库存储在 `data/pyrit_memory.db`。
## 4. 里程碑 3:训练提示防护模型
```
python src\training\train_guard.py
```
预期模型输出:
- `models/finetuned-prompt-guard`
## 5. 里程碑 4:安全应用 + 最终评估
运行安全后端:
```
python src\api\secure_app.py
```
打开安全用户界面:
- http://localhost:8001
运行最终攻击脚本:
```
python eval\attack_secure.py
```
预期结果:
- 最终 ASR 降至接近 0%。
- 注入提示应被拦截并返回 HTTP 400。
## 论文演示注意事项
- 保留服务器和评估日志,以展示安全防护前后的影响对比。
- 在 UI 上现场演示一个正常提示与一个注入提示。
- 在论文章节中报告两个脚本的 ASR 数值。
标签:API安全, DNS解析, JSON输出, Llama模型, Prompt Guard, PyRIT, SEO: PyRIT评估, SEO: 大模型安全, SEO: 提示注入防御, TCP SYN 扫描, Web UI, 中间件安全, 前后端分离, 前端可视化, 多智能体系统, 大学论文, 大语言模型安全, 小语言模型, 开源项目, 提示注入防御, 提示词防护, 攻击与防御对比, 数据目录, 机密管理, 模型存储, 模型微调, 源代码安全, 漏洞演示, 红队评估, 自动评估, 虚拟环境, 训练脚本, 逆向工具