页脚入口与安装向导;加固管理员口令存储
需求落实: 1. 页脚常驻「管理后台」链接,不用再手敲 admin.php。 2. 页脚「由 FeedLite 驱动」中的 FeedLite 改为超链接(指向开源仓库); 后台新增「页脚」设置组,可关闭整句(关闭后只留管理后台链接),也可改链接地址。 3. 管理员口令存储方式在后台如实展示:数据库 settings.admin.password_hash, 存 bcrypt 单向哈希(不可逆),明文不落盘。 4. 新增安装向导 install.php:data/ 下没有数据库时自动 302 引导; 体检环境 -> 填站点信息与口令 -> 生成 config.php -> 建库建表 -> 完成。 顺带修掉一个真实安全隐患: config.php 里的出厂占位口令 CHANGE_ME_admin 原先可被当作有效口令登录后台 (等于公开仓库里就写着线上后门口令)。现改为占位/空值一律拒绝, 未设口令时后台明确提示去安装向导,不再含糊报「口令不正确」。 实现要点: - 新增 fb_cfg_file():只读配置文件、不叠加 settings 表、绝不触达数据库。 「是否已安装」以数据库文件是否存在为判据,而 fb_cfg() 读 settings 会触发 fb_db() 就地建库 —— 那会把安装态自己造出来,所以判定必须走不碰库的通道。 - bootstrap 只在已安装时建库;未安装则 302 到 install.php(CLI 下报错退出)。 - fb_settings_flat() 在未安装时直接返回空,杜绝任何隐式建库。 - install.php 用文本级替换生成 config.php,保留全部注释与 OSS/SMTP 段落; 生成的 PHP 用 token_get_all(TOKEN_PARSE) 校验后才落盘。 - 页脚链接只放行 http/https,后台保存时校验(防 javascript: 伪协议)。 - style.css 页脚行改 flex,版本号 v6 -> v7。 验证: - php -l 全量通过;现有回归 25/25、附件专项 13/13 保持通过。 - 安装向导专项 60/60(含「明文口令未写入任何文件」「数据库字节里搜不到明文」)。 - 反向验证:撤销三处修复后对应断言确实失败(断言非装饰)。 - 几何检查:本机 15/15 + 页脚专项全过;线上真实 URL 15/15 + 页脚专项全过。 - 线上真机冒烟 22/22。
This commit is contained in:
+19
-3
@@ -23,9 +23,25 @@ return [
|
||||
// 例如:'https://feedback.example.com'
|
||||
'base_url' => '',
|
||||
|
||||
/* ---------------- 安全 ---------------- */
|
||||
// 管理员口令:在"回复"表单里填入它,即以「官方」身份回复(高亮显示),并触发邮件通知。
|
||||
// ★★ 请务必修改! ★★
|
||||
/* ---------------- 页脚 ----------------
|
||||
* 页脚永远会显示「管理后台」入口;这里的开关只控制右侧那句版权说明。
|
||||
* show_credit = false:页脚不再出现「由 FeedLite 驱动」,只留管理后台链接。
|
||||
*/
|
||||
'footer' => [
|
||||
'show_credit' => true,
|
||||
'credit_url' => 'https://code.yangyq.net/laoyang/FeedLite', // 页脚「FeedLite」二字指向的地址
|
||||
],
|
||||
|
||||
/* ---------------- 安全 ----------------
|
||||
* 管理员口令的存放规则(重要):
|
||||
* · 正常安装(走 install.php,或登录后台改口令)→ 口令以 **bcrypt 单向哈希**
|
||||
* 存在数据库 settings 表的 admin.password_hash,**明文不落盘**。
|
||||
* · 下面这个 admin_password 只是「初始值」通道,且**出厂占位值已被程序明确禁用**:
|
||||
* 值仍为 CHANGE_ME_admin 时,任何人(包括你)都无法用它登录后台。
|
||||
* · 想手工指定初始口令,就把下面这行改成你自己的口令;登录一次后建议立即改掉,
|
||||
* 改完即转为数据库哈希存储、这里可以再改回占位值。
|
||||
*/
|
||||
// ★★ 留空或保持占位值 = 未设置口令(后台不可登录,需先跑安装向导)★★
|
||||
'admin_password' => 'CHANGE_ME_admin',
|
||||
|
||||
// API 令牌:供自动化脚本 / AI 读取数据用。★ 请务必修改 ★
|
||||
|
||||
Reference in New Issue
Block a user