Skip to content

Repository files navigation

视界盾 ViewShield

云边隔离动态染色与可信溯源平台。

本项目是“面向云边数据隔离与安全交互系统”的中期答辩演示原型,围绕云边协同办公中的屏显泄密问题,演示从云端资产访问、边缘策略下发、终端动态水印嵌入,到攻击模拟、安全溯源和可信证据链展示的闭环流程。

功能模块

  • 安全态势总览:展示云端、边缘端、终端层、安全管控层的演示闭环。
  • 数据资产与云边请求:模拟终端通过边缘网关请求云端资产并获得一次性策略。
  • 动态水印工作台:支持图片和 PDF 的隐形水印嵌入。
  • 攻击实验室:支持 JPEG 压缩、缩放扰动、轻裁剪等攻击模拟。
  • 安全管控溯源:上传泄露图片或 PDF,提取水印并定位责任用户。
  • 可信证据链:展示登录、策略下发、水印嵌入、攻击模拟、溯源等事件的链式审计记录。

技术栈

  • 前端:React + Vite
  • 后端:FastAPI
  • 图片处理:OpenCV、invisible-watermark
  • PDF 处理:pypdfium2
  • 本地存储:JSON 文件

快速启动

一键启动

Windows 下进入项目根目录后,双击:

start_all.bat

启动成功后访问:

http://127.0.0.1:5173

后端健康检查地址:

http://127.0.0.1:8010/

正常返回:

{"message":"ok","version":"1.2.0"}

分别启动

后端:

python -m uvicorn backend.app.main:app --host 127.0.0.1 --port 8010

前端:

Set-Location frontend
npm install
npm run dev -- --host 127.0.0.1 --port 5173

默认演示账号

系统内置了默认演示账号,同学 clone 后无需提交 backend/storage/users.json 也可以登录:

alice / 123456
水印大师 / GCCL

首次运行后,后端会在本地自动生成 backend/storage/ 运行数据目录。该目录已被 .gitignore 忽略,不应提交到 GitHub。

目录结构

.
├─ backend/                 后端 FastAPI 服务
│  ├─ app/
│  │  ├─ routers/           API 路由
│  │  └─ services/          水印、用户、统计、指纹匹配等服务
│  ├─ requirements.txt      后端核心依赖
│  └─ requirements-pdf.txt  PDF 可选依赖说明
├─ frontend/                前端 React 应用
│  ├─ src/
│  │  ├─ App.jsx            ViewShield 主界面
│  │  ├─ styles.css         控制台样式
│  │  └─ api/client.js      API 请求封装
│  └─ package.json
├─ start_all.bat            一键启动前后端
├─ start_backend.bat        启动后端
├─ start_frontend.bat       启动前端
└─ 中期答辩演示系统升级方案.md

演示流程

  1. 打开欢迎页,点击“开始演示”。
  2. 使用演示账号登录控制台。
  3. 进入“数据资产与云边请求”,选择一个资产并请求访问。
  4. 系统自动生成会话策略,并跳转到“动态水印工作台”。
  5. 上传图片或 PDF,执行水印嵌入。
  6. 进入“攻击实验室”,生成压缩、缩放或裁剪攻击样本。
  7. 进入“安全管控溯源”,对泄露样本进行溯源。
  8. 进入“可信证据链”,查看本次演示产生的链式审计事件。

GitHub 提交注意事项

以下内容不应提交:

frontend/node_modules/
frontend/dist/
.venv/
.venv312/
backend/storage/
backend/.env
frontend/.env
*.log

原因:

  • frontend/node_modules/ 和虚拟环境体积过大,可由依赖文件重新安装。
  • backend/storage/ 是本地运行数据,可能包含上传文件、用户数据和溯源记录。
  • .env 和日志文件属于本机配置或运行产物。

常见问题

登录时报 Failed to fetch

通常是前端没有连上后端。先确认后端是否启动:

http://127.0.0.1:8010/

如果打不开,重新运行 start_all.bat

PDF 功能不可用

优先保证图片水印链路可用。PDF 功能依赖更重,如现场演示不稳定,可以将图片链路作为主流程,PDF 作为补充展示。

修改后页面没变化

前端开发服务开启时通常会自动热更新。如果没有变化,刷新浏览器:

Ctrl + F5

或重启 start_frontend.bat

About

ViewShield cloud-edge watermark trace prototype

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages