项目名称
511yj 个人导航+密码本一体化Web系统
项目简介
基于PHP+SQLite开发的个人内网/公网轻量网页工具,分为两大模块:网址导航模块、个人密码本模块。 初衷:自建个人导航页,同时解决各类网页、APP账号密码容易遗忘的问题;仅本人登录使用,数据本地存储在群晖NAS,不依赖第三方密码服务商。
运行环境
- 服务器:群晖 DSM,Web Station
- PHP版本:PHP 8.3
- 数据库:SQLite(单文件数据库,无需独立数据库服务)
- Web服务:Apache(
.htaccess安全规则生效) - 前端:Bootstrap + 原生CSS,支持响应式
- 附加特性:PWA网页应用、HTTPS反向代理
项目目录结构
网站根目录
├── index.php # 导航首页
├── passwords.php # 密码本展示页面
├── config.php # 全局配置:加密函数、登录校验、数据库连接
├── login.php / logout.php # 登录、退出登录
├── site.db # SQLite数据库文件(存放导航链接、密码记录)
├── .htaccess # 安全配置:禁止目录浏览、禁止直接下载db数据库
├── assets/
│ └── css/style.css # 样式:暗色模式、移动端自适应样式
├── admin/
│ └── passwords.php # 密码后台管理:新增/编辑/删除/导出备份
└── install.php # 初始化建表脚本,部署完成后删除
完整功能清单
1. 网址导航模块
- 自定义添加、修改、删除网址链接
- 自动识别链接协议:不带
http/https自动补全http://;已有协议头不会被强制替换 - 适配手机、电脑双端页面布局
2. 密码本模块(核心新增功能)
- 密码记录区分两类:网页账号密码、APP应用密码
- 字段:名称、网址/应用名、账号、密码、创建时间、备注
- 权限控制:必须登录后才能查看密码内容,游客无法访问
- 操作:新增、修改、删除密码条目
- 密码AES加密存储:数据库内不保存明文密码,读取时解密
- 导出备份功能:支持导出密码记录做本地备份
3. UI与体验优化迭代
- 移动端适配:原始布局手机端侧边栏过长,页面上下堆叠,引入Bootstrap响应式布局重构CSS,手机端页面体验优化
- 暗色模式:支持深色主题切换
- PWA改造:网页可添加到手机桌面,像App一样打开使用(需要HTTPS环境完整生效)
4. 安全防护配置
.htaccess配置:关闭目录浏览,禁止浏览器直接下载site.db数据库文件- 登录鉴权:所有密码管理页面做登录校验,未登录拦截
- HTTPS配置:群晖反向代理+Let’s Encrypt免费证书,外网访问全站加密;
调试记录:80端口被运营商限制,证书申请多次失败;调整路由器端口映射、反向代理端口,最终HTTPS正常生效,浏览器安全锁标识正常。
📝 开发&调试日志(时间线)
- 阶段1:基础导航搭建 搭建基础PHP导航页面,实现链接增删改查;测试链接协议自动处理逻辑;部署在群晖Web Station,内网访问调试。
- 阶段2:新增密码本子系统 在现有导航框架上扩展密码本功能;数据库新增密码表,实现AES加密存储密码;区分网页密码、APP密码两种类型;增加导出备份功能。
- 阶段3:页面移动端优化 手机测试发现布局缺陷:侧边导航栏占用过长,内容挤压在下方。引入Bootstrap重构页面CSS,实现自适应布局。
- 阶段4:安全加固
编写
.htaccess防护规则,防止数据库泄露;配置文件增加XSS转义函数,页面输出安全处理。 - 阶段5:PWA支持 + HTTPS外网调试 增加PWA清单,支持添加到手机桌面; 重点调试HTTPS:遇到端口冲突、证书验证失败、路由器端口映射错误等问题。反复调整反向代理、路由器端口转发,最终成功部署HTTPS,PWA完整功能可用。
⚠️ 维护注意事项(重点,留存)
- 隐私安全红线
- 项目文档仅记录架构流程,严禁对外发布源码、数据库、config.php加密密钥
- site.db是核心数据文件,内含加密密码,定期备份,禁止外传
- config.php内
ENCRYPT_KEY加密密钥属于核心机密,一旦泄露,数据库内加密密码存在被破解风险
- 部署操作提醒
- 首次部署运行
install.php建表,完成后立刻删除install.php,防止他人重建数据库覆盖数据 - 公网访问必须启用HTTPS;HTTP环境PWA功能不全
- 更换服务器迁移:完整备份site.db + config.php,上传新服务器,保证加密密钥不变,密码才能正常解密
- 首次部署运行
- 后续可扩展方向(预留)
- 密码分类标签
- 密码强度校验
- 备份文件增加密码保护
文档用途
- 保存在网页/本地,作为项目维护手册;后续修改、新增功能时快速回顾整体架构、历史踩坑点