From 9bb6e6a41e340de5ce55539ed8aeefba08a5887b Mon Sep 17 00:00:00 2001 From: MasonLiu <2857911564@qq.com> Date: Sun, 13 Sep 2026 00:54:16 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=B7=E6=9F=A5=E7=9C=8BCHANGELOG.md?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E6=9B=B4=E6=96=B0=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 89 ++++++++++ README.md | 16 +- admin/_guard.php | 12 +- admin/content.php | 4 +- admin/force_password.php | 73 ++++++++ admin/login.php | 9 +- admin/notice.php | 372 +++++++++++++++++++++++++++++++++++++++ assets/css/common.css | 15 ++ img/back-1.png | Bin 0 -> 777105 bytes img/back-2.png | Bin 0 -> 594061 bytes img/front.png | Bin 0 -> 1726092 bytes includes/auth.php | 44 ++++- includes/db.php | 42 ++++- includes/layout.php | 120 ++++++++++--- index.php | 88 ++++----- nav.php | 2 +- notice.php | 59 +++++++ GUIDE.md => 操作文档.md | 39 ++-- 18 files changed, 879 insertions(+), 105 deletions(-) create mode 100644 CHANGELOG.md create mode 100644 admin/force_password.php create mode 100644 admin/notice.php create mode 100644 img/back-1.png create mode 100644 img/back-2.png create mode 100644 img/front.png create mode 100644 notice.php rename GUIDE.md => 操作文档.md (71%) diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..1100663 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,89 @@ +# SecHome · 安全屋 —— 更新日志 + +本文件记录项目的主要功能新增与调整,最新在上、按日期归档。 +升级/迁移前请务必备份整个 `data/` 目录(数据库、访问日志、上传文件、文章图片)。 + +--- + +## 2026-09-12 + +### 新增 + +- **Navicat 数据库连接密码解密工具**(`func/navicat.html`) + - 支持 Navicat 11 及以前(Blowfish / ECB)与 12 及以后(AES-128-CBC)两代算法 + - 纯前端本地计算,密文不上传服务器;支持解密与加密双向操作 +- **Navicat 连接文件解析**:可直接上传 Navicat 导出的 `.ncx` 文件,规范化输出各连接的名称、主机、端口、用户名与解密后的密码 +- **「更新公告」功能** + - 前台页脚新增「更新公告」入口,后台新增「更新公告管理」(`admin/notice.php`) + - 支持多条公告、**保留历史**、任意一条均可再次编辑;可置顶与隐藏 + - 每条公告展示**发布时间**与**最后修改时间**(未修改时标注) + - 内容支持超链接:`[文字](链接)` 写法,站内相对路径与外链均可跳转;裸网址自动识别 +- **风控管理页:登录审计** + - 新增「登录信息」卡片:当前用户、本次登录时间 / 登录 IP / 登录设备,以及历史成功登录记录(最近 15 条) + - 新增「登录失败日志」卡片:按「IP × 日期」聚合失败次数与最近设备信息,支持按 IP 模糊筛选、一键清空 + - 登录成功与失败均记录到 `login_log` 表(旧库自动补列,无需手工迁移) + - **登录设备信息**由浏览器采集(操作系统及版本、手机型号、CPU 架构、屏幕分辨率、语言、是否触屏,能获取到什么就记录什么)并结合服务端 UA 解析 +- **访问风控体系** + - IP 黑名单支持单 IP / CIDR 网段 / 星号通配,前台与后台(含登录页)**统一拦截**,命中返回 403 风控提示页(主提示与次行说明可在后台自定义) + - 自动风控规则:后台登录失败、前台 404、请求频率三条,均可独立启停并配置阈值,达到阈值自动永久封禁 + - 黑名单支持一键移除「风控自动」、勾选批量移除与清空;解封单 IP 时同步清除其风险计数 +- **工具页站点 logo 统一**:新增 `api/site.php`,静态工具页 favicon 自动跟随后台「站点 logo」设置(未设置或本地直开时回退默认图标) + +### 优化 + +- 后台顶栏改为**左侧可收缩侧边栏**:整合全部管理入口,并自动汇总当前页「本页功能」锚点(点击直达设置区块、随滚动高亮);折叠状态本地记忆,小屏自动切换为抽屉 +- 侧栏底部显示「当前用户(用户名)」 +- **风控管理页筛选 / 翻页改为 AJAX 局部刷新**(新增 `admin/visits_data.php` 查询接口):不再整页跳转,也不会跳回页面顶部 +- 修复全站「返回顶部」按钮不灵敏 / 到顶仍显示的问题(改为统一捕获滚动监听,并排除侧栏等容器误触发) +- 首次登录强制修改默认口令 + +## 2026-09-10 + +### 新增 + +- 新增项目说明文档 `README.md` 与操作指南 `操作文档.md` + +### 优化 + +- 完善网页逻辑;功能区工具由 PHP 外壳迁移为**静态 HTML 页**,旧入口自动 302 迁移,无需手工调整 +- 访问日志改为文件存储(`data/vistors.log`,完整保留、不设上限),后台读取文件做统计与筛选 +- 后台操作提示统一改为**右下角 Toast 弹窗**,不再占据页面顶部 +- 同页表单提交后保持滚动位置,避免刷新后跳回页面顶部 + +## 2026-09-09 + +### 新增 + +- 外部工具区支持**分区 / 栏目**,库首页按分组展示 + +### 优化 + +- 更新网页架构与样式;操作逻辑若干改进 + +## 2026-09-08 + +### 优化 + +- 更新网页架构,新增并完善外部工具区 + +## 2026-09-06 + +### 新增 + +- 新增**文章库**(Markdown 写作与三栏阅读,分区管理、置顶排序) +- 新增**辅助维权工具**(反弹 Shell、凭证提取、持久化参考;仅供授权测试学习) + +### 优化 + +- 项目更名;完善整体功能 + +### 其他 + +- 初始化仓库,创建项目 + +--- + +## 维护约定 + +- 每次发布新功能或重要调整,请在**顶部新增对应日期的条目**,按「新增 / 优化 / 修复 / 其他」归类。 +- 涉及数据结构的变更,请同步在 `README.md` / `操作文档.md` 中说明。 diff --git a/README.md b/README.md index 3a5344b..0a8a056 100644 --- a/README.md +++ b/README.md @@ -40,10 +40,8 @@ Markdown 写作与三栏阅读(标题栏 / 段落目录 / 正文),分区 要求:PHP 7.4+(启用 `pdo_sqlite`)、现代浏览器。 -```bash -cd SecHome -php -S 0.0.0.0:8000 -``` +直接将文件放置在网站路径下即可,打开网站时会自动创建数据库文件; +迁移时仅需确保/data/文件夹不变即可。 - 前台:http://localhost:8000 - 后台:http://localhost:8000/admin @@ -76,3 +74,13 @@ php -S 0.0.0.0:8000 - 请立即修改默认口令,并视需要更换密码散列方案 - 自动风控可能误封**共享出口 IP**:请谨慎开启「请求频率」规则或调高阈值 - 黑名单为全站拦截、无后台逃生通道;误封时请换网络登录后台移除,或直接编辑 `data/homepage.db` 中 `ip_blacklist` 表 + +## 网站展示 + +前端UI展示: + + +后端展示: + + + diff --git a/admin/_guard.php b/admin/_guard.php index df58cca..900daa7 100644 --- a/admin/_guard.php +++ b/admin/_guard.php @@ -7,11 +7,20 @@ require_once dirname(__DIR__) . '/includes/auth.php'; require_once dirname(__DIR__) . '/includes/layout.php'; require_login('login.php'); +// 未修改初始/重置密码前,禁止进入其它后台页面(避免绕过强制改密) +if (hp_password_needs_change()) { + $self = basename((string) ($_SERVER['SCRIPT_NAME'] ?? '')); + if ($self !== 'force_password.php') { + header('Location: force_password.php'); + exit; + } +} + /** 后台侧边栏(原顶部分区栏改为可收缩侧栏;含“本页功能”锚点容器) */ function admin_topbar(string $active = ''): void { global $P; - $site = setting_get('site_name', '知识导航站'); + $site = setting_get('site_name', 'SecHome'); $admin = (string) ($_SESSION['admin'] ?? ''); // 立即执行:标记 body 供侧栏布局使用,并恢复折叠状态(避免首帧闪动) echo '' . "\n"; @@ -40,6 +49,7 @@ function admin_topbar(string $active = ''): void 'articles' => ['articles.php', '文章管理', '📄'], 'exttools' => ['exttools.php', '外部工具', '🔗'], 'content' => ['content.php', '网站管理', '⚙'], + 'notice' => ['notice.php', '更新公告', '📢'], 'visits' => ['visits.php', '风控管理', '🛡'], ]; echo ''; diff --git a/admin/content.php b/admin/content.php index 1abd629..4571a03 100644 --- a/admin/content.php +++ b/admin/content.php @@ -46,7 +46,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $act = (string) ($_POST['act'] ?? ''); switch ($act) { case 'site': - settings_set('site_name', trim((string) ($_POST['site_name'] ?? '知识导航站'))); + settings_set('site_name', trim((string) ($_POST['site_name'] ?? 'SecHome'))); settings_set('site_slogan', trim((string) ($_POST['site_slogan'] ?? ''))); touch_last_updated(); $msgKind = 'ok'; @@ -344,7 +344,7 @@ $all = []; foreach ($pdo->query('SELECT key, value FROM settings') as $r) { $all[$r['key']] = (string) $r['value']; } -$site = $all['site_name'] ?? '知识导航站'; +$site = $all['site_name'] ?? 'SecHome'; layout_head('网站管理'); admin_topbar('content'); diff --git a/admin/force_password.php b/admin/force_password.php new file mode 100644 index 0000000..3638d30 --- /dev/null +++ b/admin/force_password.php @@ -0,0 +1,73 @@ + + + + + 安全提醒:请先修改初始密码 + + 检测到当前账号仍在使用初始密码。为防止后台被未授权访问,必须修改密码后方可进入其它管理页面。 + + + = he($err) ?> + + + = csrf_field() ?> + 当前密码(初始为 admin123) + + 新密码(至少 6 位) + + 确认新密码 + + + 修改并继续 + 退出登录 + + + + + + + +
+ 检测到当前账号仍在使用初始密码。为防止后台被未授权访问,必须修改密码后方可进入其它管理页面。 +