diff --git a/app/lib/passwordPolicy.js b/app/lib/passwordPolicy.js index 92896b9..5bd6505 100644 --- a/app/lib/passwordPolicy.js +++ b/app/lib/passwordPolicy.js @@ -241,7 +241,8 @@ function requireTestPassword(appConfig) { * ⚠️ bcrypt 的盐是**随机**的:同一口令每次哈希结果都不同 ⇒ ⛔ 不能只比对哈希字符串。 * 故本模块提供**两条互补通道**,由调用方 OR 合并(见 `controller/auth.js adminLogin`): * · 哈希通道 `isDefaultAdminHash(dbHash)` —— 覆盖「DB 里就是内置的那串哈希」 - * (`schema.sql` 的无盐 SHA256 + seeder 002 的固定盐 bcrypt),**与输入无关**; + * (R113 前 `schema.sql` 的无盐 SHA256;R113 起 `schema.sql` 与 `seeder 002` + * 统一为**同一固定盐 bcrypt**),**与输入无关**; * · 口令通道 `DEFAULT_ADMIN_PASSWORDS.includes(明文)` —— 覆盖「同口令、不同盐」 * 的**重新播种**场景(登录成功的明文必等于该默认口令,见 `002-seed-admin.js` 的 * `ADMIN_INIT_PASSWORD` 分支会以随机盐重算哈希)。 @@ -258,8 +259,11 @@ const DEFAULT_ADMIN_PASSWORDS = ['admin', 'admin123', 'admin123456']; /** * 已发布默认管理员凭据的**字面哈希**(固定值,可精确比对)。 - * · `8c69…4918`:SHA256(无盐) ← `database/schema.sql` 的建库 INSERT; - * · `$2b$10$Nc6…co9.`:bcrypt(cost=10, 固定盐) ← `backend/database/seeders/002-seed-admin.js`。 + * · `8c69…4918`:SHA256(无盐) —— **R113 前** `database/schema.sql` 建库 INSERT 的产物; + * 自 **R113(候选㉔)** 起该文件已统一为下方 bcrypt ⇒ 本项作为**历史值保留**, + * 用于拦截仍存该哈希的旧库 / 旧备份(⛔ 不删:保留即安全 —— 非默认口令不会命中)。 + * · `$2b$10$Nc6…co9.`:bcrypt(cost=10, 固定盐) —— 来源**两处已收敛为同值**: + * `database/schema.sql` 的建库 INSERT + `backend/database/seeders/002-seed-admin.js`。 */ const KNOWN_DEFAULT_ADMIN_HASHES = [ '8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918',