更新日志
记录 NaviHive 的所有版本更新和重要变更。
v1.2.0(2025-11-12)
新增功能
完整项目文档
NaviHive 现已提供完整的在线文档站点,基于 VitePress 构建。
- 文档框架:VitePress 1.6.4
- 多语言支持:中文(默认)、英文
- GitHub Pages:自动部署到 GitHub Pages
- 响应式设计:完美适配桌面和移动端
功能截图文档
新增完整的功能截图展示页面,包含 11 张精美截图:
- 访客模式界面:展示公开内容浏览体验
- 登录界面:安全认证流程
- 管理员界面:完整管理功能展示
- 分组管理:添加/编辑分组对话框
- 站点管理:添加/编辑站点对话框
- 全局设置:网站配置界面
- 自定义CSS:样式定制功能
- 暗色模式:深色主题展示
- 移动端适配:响应式界面演示
所有截图均使用线上演示站点截取,展示真实的生产环境效果。
文档内容
完整的文档体系,涵盖所有方面:
用户指南:
- 项目介绍
- 为什么选择 NaviHive
- 功能截图
- 常见问题
- 更新日志
核心功能:
- 功能概览
架构设计:
- 架构概览
API 参考:
- API 概览
- 认证 API
部署与安全:
- 部署指南
- 安全指南
参与贡献:
- 贡献指南
技术改进
- CI/CD:GitHub Actions 自动部署文档
- SEO 优化:完整的 meta 标签和描述
- 导航优化:清晰的侧边栏和顶部导航
- 搜索功能:内置文档搜索
文档地址
- GitHub Pages:https://zqq-nuli.github.io/Cloudflare-Navihive/
- 文档源码:
docs/目录
v1.1.0(2025-11-08)
新增功能
访客模式(公开/私有内容控制)
允许未登录用户访问公开内容,同时保护私有内容。
配置选项:新增
AUTH_REQUIRED_FOR_READ环境变量false(默认):启用访客模式,允许查看公开内容true:所有内容需要认证(v1.0.x 行为)
数据库字段:
groups和sites表新增is_public字段1:公开可见(访客和管理员)0:私有内容(仅管理员)
访问控制:
- 访客:仅查看
is_public=1的分组和站点 - 管理员:查看所有内容
- 写操作始终需要认证
- 访客:仅查看
性能优化:
- 在
is_public字段上创建索引 - 根据认证状态优化查询
- 在
登录速率限制
防止暴力破解攻击的安全功能。
- 限制规则:每 IP 15 分钟内最多 5 次登录尝试
- 实现方式:
SimpleRateLimiter类(内存存储) - 超限响应:返回 429 状态码
- 日志记录:记录触发速率限制的 IP 地址
安全改进
Phase 1:关键安全修复(Critical)
CR-001:JWT 签名实现
- 使用 Web Crypto API 的 HMAC-SHA256 算法
- 替换不安全的自定义签名实现
CR-002:SQL 注入防护
- 所有查询使用 D1 参数化语句
- 使用
.bind()方法,永不拼接字符串 - 字段白名单验证
CR-003:XSS 防护
- 自定义 CSS 过滤危险模式
- 移除
javascript:、data:text/html、vbscript:协议 - 移除
@import、expression()、-moz-binding - 移除事件处理器和内联脚本
CR-004:SSRF 防护
- URL 验证阻止私有 IP 范围
- 本地回环(127.0.0.1、::1)
- 私有 IPv4(10.0.0.0/8、172.16.0.0/12、192.168.0.0/16)
- 链路本地(169.254.0.0/16、fe80::/10)
- 仅允许 HTTPS 和 data:image/ 协议
- URL 验证阻止私有 IP 范围
Phase 2:高优先级修复(High)
HS-001:HttpOnly Cookie
- 令牌主要存储在 HttpOnly Cookie 中(防止 XSS 窃取)
- localStorage 作为兼容性备用
- Cookie 自动随请求发送
HS-002:登录速率限制
- 5 次尝试 / 15 分钟限制
- 内存存储(SimpleRateLimiter)
- IP 级别限制
HS-003:bcrypt 密码哈希
- 使用 bcrypt-edge(Cloudflare Workers 兼容)
- 10 轮盐值
- 提供
pnpm hash-password命令生成哈希
HS-004:CORS 配置
- 白名单来源验证
- 自动允许同源请求
- 支持 workers.dev 子域名(开发环境)
- 启用凭证支持(cookie 认证)
HS-005:结构化错误处理
- 唯一错误 ID(追踪和调试)
- 用户友好错误消息(不泄露敏感信息)
- 详细服务端日志
- 请求上下文记录(路径、方法)
Phase 3:中等优先级修复(Medium)
MS-001:TypeScript 严格模式
- 启用所有严格检查选项
- 修复 65+ 类型错误
- 禁止隐式 any
- 严格空值检查
- 禁止未检查的索引访问
MS-005:请求体大小限制
- 最大 1MB 限制(防止内存耗尽)
- 超限返回 413 状态码
MS-007:深度数据验证
- 导入操作的全面验证
- 结构、类型、URL 格式检查
- 字段白名单
- 所有用户输入验证
数据库变更
新增字段和索引以支持访客模式:
-- groups 表新增字段
ALTER TABLE groups ADD COLUMN is_public INTEGER DEFAULT 1;
-- sites 表新增字段
ALTER TABLE sites ADD COLUMN is_public INTEGER DEFAULT 1;
-- 性能优化索引
CREATE INDEX IF NOT EXISTS idx_groups_is_public ON groups(is_public);
CREATE INDEX IF NOT EXISTS idx_sites_is_public ON sites(is_public);迁移指南
从 v1.0.x 升级到 v1.1.0 需要执行数据库迁移:
# 1. 备份数据
wrangler d1 export navigation-db --output=backup.sql
# 2. 执行迁移
wrangler d1 execute navigation-db --file=migrations/002_add_is_public.sql
# 3. 部署新版本
pnpm deploy环境变量变更
新增环境变量(可选):
{
"vars": {
"AUTH_REQUIRED_FOR_READ": "false" // 新增:启用访客模式
}
}提交记录
总计 14 个安全和功能提交:
- 4 个关键安全修复
- 5 个高优先级安全修复
- 3 个中等优先级安全修复
- 2 个 v1.1.0 功能实现
所有变更已提交并部署到生产环境。
致谢
感谢社区反馈和安全研究人员的贡献,帮助 NaviHive 成为更安全的导航管理系统。
v1.0.4(2025-04-22)
新增功能
- ✨ 新增"记住我"登录功能,可选 30 天长效 Token
- 🔐 优化 Token 过期时间管理机制
Bug 修复
- 🐛 修复 URL 正则表达式转义字符问题
v1.0.3(2025-04-14)
新增功能
- 🖼️ 增加背景图片设置功能
- 🎨 新增蒙版透明度调节功能
v1.0.2(2025-04-09)
新增功能
- ✨ 新增导入数据智能合并功能(按 URL 匹配)
- ✨ 新增分组折叠展开功能
Bug 修复
- 🐛 修复导入数据时自定义样式为空的报错问题
- 🐛 修复导入数据产生重复数据的 Bug
- 🐛 修复无卡片时排序无法保存的问题
v1.0.1(2025-04-06)
改进
- 🔄 更新 Chrome 浏览器标签数据转换工具
v1.0.0(2025-04-05)
首次发布
NaviHive 的第一个稳定版本,提供完整的网站导航管理功能。
核心功能
前端特性
现代化 UI:
- 基于 React 19 和 Material UI 7.0
- 支持深色/浅色主题切换
- 响应式设计,适配移动端
分组管理:
- 创建、编辑、删除导航分组
- 拖拽排序
- 可折叠/展开
站点管理:
- 添加、编辑、删除网站链接
- 自动获取网站图标
- 支持描述和备注
- 拖拽排序
全局配置:
- 自定义站点标题
- 自定义站点名称
- 自定义 CSS 样式
数据管理:
- JSON 格式导出所有数据
- JSON 格式导入数据(智能合并)
后端特性
Cloudflare Workers:
- 全球边缘计算部署
- 无服务器架构
- 自动扩展
Cloudflare D1 数据库:
- 基于 SQLite 的分布式数据库
- 关系型数据模型
- 事务支持
认证系统:
- 用户名/密码认证
- JWT 令牌
- 受保护的 API 路由
RESTful API:
/api/groups- 分组管理/api/sites- 站点管理/api/configs- 配置管理/api/login- 用户认证/api/export- 数据导出/api/import- 数据导入
技术栈
前端:
- React 19
- TypeScript 5.7
- Material UI 7.0
- Tailwind CSS 4.1
- DND Kit(拖拽)
- Vite 6
后端:
- Cloudflare Workers
- Cloudflare D1(SQLite)
- Web Crypto API(JWT)
开发工具:
- pnpm(包管理)
- Wrangler(Cloudflare CLI)
- ESLint + Prettier(代码质量)
数据库结构
三个核心表:
groups(分组表):
- id(主键)
- name(分组名称)
- order_num(排序号)
- created_at、updated_at(时间戳)
sites(站点表):
- id(主键)
- group_id(外键,关联分组)
- name(站点名称)
- url(站点链接)
- icon(图标 URL)
- description(描述)
- notes(备注)
- order_num(排序号)
- created_at、updated_at(时间戳)
configs(配置表):
- key(主键,配置项名称)
- value(配置值)
- created_at、updated_at(时间戳)
部署方式
支持多种部署方式:
- Cloudflare Workers 直接部署(推荐)
- 自定义域名部署
- workers.dev 子域名部署
配置选项
通过 wrangler.jsonc 配置:
AUTH_ENABLED:启用/禁用认证AUTH_USERNAME:管理员用户名AUTH_PASSWORD:管理员密码(明文,v1.1.0 改为哈希)AUTH_SECRET:JWT 签名密钥- D1 数据库绑定
开发特性
双 API 模式:
- 真实 API(连接 Cloudflare Workers)
- Mock API(内存模拟,快速开发)
热模块替换:Vite 提供快速的开发体验
类型安全:完整的 TypeScript 支持
已知限制
- 密码存储为明文(v1.1.0 已修复)
- JWT 签名不够安全(v1.1.0 已修复)
- 无速率限制(v1.1.0 已添加)
- 所有内容需要认证访问(v1.1.0 添加访客模式)
- 缺少部分输入验证(v1.1.0 已完善)
未来计划
- ✅ 访客模式(已在 v1.1.0 实现)
- ✅ 安全加固(已在 v1.1.0 实现)
- ✅ 完整文档(已在 v1.2.0 实现)
- 用户权限系统
- 站点分类标签
- 站点搜索功能
- 导入浏览器书签
- 单元测试和集成测试
致谢
感谢所有早期用户的反馈和建议!
版本命名规则
NaviHive 遵循 语义化版本规范:
- 主版本号(MAJOR):不兼容的 API 变更
- 次版本号(MINOR):向下兼容的功能新增
- 修订号(PATCH):向下兼容的问题修复
示例:
1.0.0→1.1.0:新增访客模式功能(向下兼容)1.1.0→1.1.1:修复 bug(向下兼容)1.1.0→1.2.0:新增文档功能(向下兼容)1.2.0→2.0.0:重大架构变更(可能不兼容)
如何获取更新
自托管用户
# 1. 查看当前版本
git describe --tags
# 2. 拉取最新代码
git pull origin main
# 3. 查看更新日志
git log
# 4. 安装依赖
pnpm install
# 5. 执行必要的迁移(如有)
# 查看 migrations/ 目录
# 6. 部署更新
pnpm deploy订阅更新通知
- Watch GitHub 仓库:点击仓库右上角 "Watch" → "Custom" → 勾选 "Releases"
- Star 仓库:及时收到推送通知
- RSS 订阅:订阅 GitHub Releases RSS
贡献变更日志
如果您提交了功能或修复,请在 PR 中更新本文档的 "Unreleased" 部分,方便维护者整理发版。
格式示例:
## Unreleased
### Added
- 新功能描述 (#PR号)
### Fixed
- 修复的问题描述 (#PR号)