# SecureVault **Repository Path**: mllt992/secure-vault ## Basic Information - **Project Name**: SecureVault - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-01-14 - **Last Updated**: 2026-01-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: ai项目, 停止维护 ## README # SecureVault - 安全凭证管理平台 ![image-20260115012944342](./README.assets/image-20260115012944342.png) ![image-20260115013003302](./README.assets/image-20260115013003302.png) ![image-20260115013014941](./README.assets/image-20260115013014941.png) ![image-20260115013025731](./README.assets/image-20260115013025731.png) SecureVault 是一个专注于安全凭证管理的开源平台,采用零知识架构设计,确保用户数据在整个生命周期中都处于加密状态。平台支持多平台凭证管理、消费记录追踪、团队协作共享等功能,适用于个人和企业用户的数字资产管理需求。 ## 核心价值主张 在当今数字化时代,用户需要管理大量的账号密码、订阅服务、API密钥等敏感信息。传统的信息管理方式存在诸多安全隐患,如密码重复使用、信息分散存储、缺乏加密保护等问题。SecureVault 通过客户端加密技术,实现真正的零知识架构,即服务提供商无法解密用户存储的任何数据。平台不仅提供安全的凭证存储功能,还整合了消费记录管理、团队协作、审计追踪等实用功能,帮助用户建立完整的数字资产管理体系。所有敏感数据在传输和存储过程中均采用业界标准的加密算法进行保护,确保用户信息的安全性。 ## 主要功能特性 ### 凭证安全管理 SecureVault 提供完整的凭证管理解决方案,支持多种凭证类型的创建、存储和检索。凭证内容在客户端即进行加密处理,加密后的密文传输至服务器存储,即使服务器遭受攻击,攻击者也无法获取明文信息。平台支持凭证的分类管理、标签标记、收藏置顶等常用功能,帮助用户高效组织和管理大量凭证信息。内置的密码生成器可创建符合各类安全要求的高强度随机密码,密码强度检测功能能够评估现有密码的安全等级并提供改进建议。此外,系统还会定期检查是否存在弱密码、重复密码、过期密码以及已知泄露的密码,及时提醒用户进行更新。 ### 平台与消费记录 平台管理功能允许用户记录各类订阅服务的详细信息,包括流媒体会员、云服务、VPN 流量包等。消费记录模块支持会员订阅、流量购买、其他消费等多种类型,帮助用户追踪和管理订阅支出。系统自动统计各平台的消费情况,提供月度、年度等维度的数据报表,方便用户了解自己的消费结构和趋势。即将到期的消费记录会收到提醒通知,避免服务中断。每个消费记录支持关联具体平台,建立清晰的消费归属关系。 ### 团队协作与共享 SecureVault 支持将凭证安全地分享给团队成员或整个团队,实现密钥的安全传递和权限控制。共享功能采用接收方的公钥进行加密,确保只有目标用户能够解密查看。团队成员管理功能支持设置不同角色和权限级别,控制成员对凭证的访问和操作范围。共享凭证的访问记录会被完整记录,支持随时查看和撤销共享权限。 ### 安全审计与监控 系统内置完整的审计日志功能,记录所有用户的操作行为,包括登录登出、凭证操作、设置变更等。审计日志采用防篡改设计,确保历史记录的完整性和可信度。安全仪表板提供整体安全状况的可视化展示,包括弱密码统计、过期密码提示、泄露风险预警等。系统支持配置多种安全策略,如密码复杂度要求、双因素认证强制等。 ## 技术架构 ### 前端技术栈 前端采用 Vue 3 框架作为核心开发框架,结合 Composition API 实现更加灵活和可维护的组件逻辑。UI 组件库选用 Element Plus,配合 Tailwind CSS 实现样式管理,兼顾开发效率和视觉体验。状态管理使用 Pinia 库,相比 Vuex 更加轻量且对 TypeScript 支持更好。路由管理采用 Vue Router,实现页面的权限控制和懒加载优化。HTTP 客户端使用自封装的 apiClient,集成了请求拦截、响应处理、错误统一管理等特性。 数据加密在前端完成,使用 Web Crypto API 和 crypto-js 库实现 AES-256 对称加密和 RSA 非对称加密。所有凭证的敏感字段在用户输入后立即加密,只有用户的主密钥才能解密查看。Pinia stores 中的凭证数据采用懒加载策略,减少内存占用并提升页面加载速度。前端构建使用 Vite 工具,支持热模块替换和按需编译,生产环境会自动进行代码分割和资源压缩。 ### 后端技术栈 后端基于 Node.js 运行时环境,使用 Express 框架构建 RESTful API 服务。开发环境采用 TypeScript 编写代码,通过编译检查减少运行时错误。数据库 ORM 层选用 TypeORM,支持实体定义、关系映射、迁移管理等高级功能。数据存储使用 MySQL 数据库,选用 InnoDB 引擎保证事务支持和数据完整性。 认证授权采用 JWT(JSON Web Token)机制,访问令牌有效期较短,刷新令牌支持续期和登出失效。双因素认证支持 TOTP 标准,可通过 Google Authenticator 等应用绑定。安全中间件实现了请求频率限制、请求体验证、安全头部设置等防护措施。审计中间件自动记录所有 API 请求的关键信息,包括请求时间、用户标识、操作类型、客户端 IP 等。 ### 加密体系设计 加密体系采用分层密钥架构,主密钥由用户设置并仅存储在用户端,用于派生数据加密密钥。凭证字段采用 AES-256-GCM 算法加密,该算法同时提供机密性和完整性保护。密钥派生使用 PBKDF2 算法,配合随机盐值进行多次迭代,增加暴力破解难度。密码哈希使用 bcrypt 算法,支持自适应成本因子调整。 共享功能采用 RSA-2048 非对称加密,用户的密钥对在客户端生成,私钥使用主密钥加密后存储在服务器。分享凭证时,发送方使用接收方的公钥加密数据密钥,确保只有目标用户能够解密。系统不存储用户的明文主密钥或密码,即使数据泄露也无法还原用户数据。 ## 快速开始 ### 环境准备 在开始部署 SecureVault 之前,需要确保服务器满足以下基本要求。操作系统推荐使用 Ubuntu 20.04 LTS 或其他主流 Linux 发行版,内存建议至少 2GB,磁盘空间不少于 20GB。服务器需要安装 Docker 和 Docker Compose 工具,用于容器化部署和管理服务。Docker 的安装可通过官方 APT 源进行配置,安装完成后需要将当前用户添加到 docker 组以避免权限问题。防火墙需要开放 HTTP(80 端口)、HTTPS(443 端口)和 SSH(22 端口)访问。 ### 部署配置 首先克隆项目代码到服务器,然后进入项目根目录。复制环境变量模板文件并重命名为 .env,根据实际部署环境修改各项配置参数。关键配置项包括数据库连接信息、Redis 缓存配置、JWT 密钥、加密密钥、邮件服务配置等。建议使用强随机字符串生成工具创建密钥,不要使用默认或弱密码。SSL 证书可通过 Let's Encrypt 免费获取,或使用自签名证书进行测试。 使用 Docker Compose 启动所有服务,首次启动会自动构建镜像并初始化数据库。启动完成后可通过浏览器访问前端界面(默认 http://localhost:8080),后端 API 服务地址为 http://localhost:3000/api。首次访问需要注册账号,设置主密码后即可开始使用。主密码是数据加密的核心,请务必牢记且不要泄露给他人。 ### 开发环境 如果需要参与开发或进行二次开发,可以启动独立的开发环境。后端开发需要 Node.js 18+ 环境,进入 backend 目录执行 npm install 安装依赖。创建 .env 文件并配置数据库连接,执行 npm run dev 启动开发服务器,支持 TypeScript 热重载。前端开发同样需要 Node.js 环境,进入 frontend 目录执行 npm install 安装依赖,执行 npm run dev 启动 Vite 开发服务器,支持 Vue 组件热更新。 数据库初始化脚本位于 backend/src/database/init.ts,首次运行前需要执行数据库迁移创建所有表结构。开发数据填充脚本可快速创建测试数据用于功能验证。所有后端服务在开发环境下会开启详细的日志输出,方便排查问题。 ## 项目结构 ### 前端目录结构 前端项目采用标准的 Vue 3 项目布局,src 目录下按功能模块组织代码。assets 目录存放静态资源文件,包括样式表、图片、字体等。components 目录包含全局可复用的组件,按照功能进一步细分为 dashboard、password、platform 等子目录。views 目录存放页面级组件,对应路由配置中的各个页面。api 目录封装了所有后端接口调用,每个功能模块有独立的 API 文件。stores 目录包含 Pinia 状态管理定义,包括用户认证、凭证、分类、标签等数据状态。utils 目录存放工具函数,加密相关功能在 crypto.ts 文件中实现。 ### 后端目录结构 后端项目采用 TypeScript 编写,src 目录下的结构清晰划分各功能层。config 目录存放应用配置加载逻辑。controllers 目录包含 HTTP 请求处理函数,接收请求参数、调用业务逻辑、返回响应结果。entities 目录定义 TypeORM 实体类,对应数据库表结构。middlewares 目录实现各类中间件,包括认证验证、请求频率限制、审计日志记录、安全头部设置等。routes 目录定义 API 路由配置,将请求路径映射到对应的控制器方法。services 目录包含业务逻辑实现,封装核心功能供控制器调用。validators 目录实现请求参数的校验逻辑,确保数据合法性。 ## API 接口概览 ### 认证接口 认证模块提供用户注册、登录、双因素验证、令牌刷新、登出等接口。用户注册接口接收邮箱、密码、主密钥加密值等信息,创建账号后发送验证邮件。登录接口验证凭证后返回访问令牌和刷新令牌,支持可选的双因素验证码验证。令牌刷新接口使用刷新令牌获取新的访问令牌,维持登录状态。登出接口使刷新令牌失效,并可选择清除所有设备会话。双因素认证接口支持启用、禁用和验证 TOTP 验证码。 ### 凭证管理接口 凭证管理是核心功能模块,提供完整的 CRUD 操作接口。创建凭证接口接收加密后的凭证内容,存储到数据库并记录审计日志。查询凭证列表接口支持分页、筛选、排序、关键词搜索等能力,返回凭证摘要信息。获取凭证详情接口返回完整凭证内容,需要验证用户身份和访问权限。更新凭证接口对现有记录进行修改,同时更新修改时间和审计日志。删除凭证接口支持单条删除和批量删除,删除操作不可恢复。辅助功能包括密码生成、密码强度检测、收藏置顶等接口。 ### 平台与消费接口 平台管理接口允许用户创建、查询、更新、删除平台记录,每个平台可关联多个消费记录。平台支持设置分类、图标、备注等信息,提供统计接口汇总消费数据。消费记录接口管理各类订阅和购买记录,支持会员订阅、流量包、其他消费等类型。消费记录可设置到期提醒,系统会在到期前通知用户。统计接口按时间维度聚合消费数据,生成日报、周报、月报等报表。 ### 用户与系统接口 用户接口提供个人信息获取、设置更新、登录历史查看等功能。安全设置支持双因素认证开关、会话管理、密码修改等操作。团队接口实现团队创建、成员邀请、角色管理、共享权限控制等功能。系统接口提供健康检查、配置查询等运维支持接口。所有敏感操作都会记录审计日志,支持按时间、用户、操作类型等条件查询。 ## 安全设计要点 ### 零知识架构 SecureVault 采用严格的零知识架构设计,服务器存储的所有数据都是加密后的密文。用户的密码和主密钥仅存储在客户端本地,服务器无法解密用户数据。加密和解密操作完全在前端完成,传输过程中仅传递加密数据。这种架构确保即使服务器被攻破或数据库泄露,攻击者也无法获取用户的敏感信息。 ### 传输安全 所有客户端与服务器之间的通信都通过 HTTPS 加密传输,防止中间人攻击和数据窃取。HTTP 请求会被自动重定向到 HTTPS,确保始终使用安全连接。服务器配置了严格的安全头部,包括 HSTS、CSP、X-Frame-Options 等,防止各类 Web 攻击。API 接口实现请求频率限制,防止暴力破解和拒绝服务攻击。 ### 数据安全 数据库中存储的敏感字段都是加密后的密文,密钥仅由用户掌握。审计日志采用追加写入模式,防止历史记录被篡改。数据库连接使用强密码认证,敏感配置通过环境变量管理。定期备份数据库,备份文件使用强加密算法保护。生产环境禁用不必要的服务和端口,最小化攻击面。 ## 贡献与支持 我们欢迎社区开发者参与 SecureVault 的改进和完善。提交代码前请确保遵循项目的代码规范和提交信息规范,编写必要的测试用例并通过现有测试。功能建议和问题反馈可通过 GitHub Issues 提交,我们会及时处理。重大功能变更建议先在 Issues 中讨论设计思路,避免重复劳动。 ## 许可证 SecureVault 采用 MIT 许可证开源,您可以自由使用、修改和分发本项目,但需要保留原始的版权声明和许可证文本。开源使用本项目意味着您接受协议条款,请务必在部署前阅读并理解完整的许可证内容。