bugfix(#24 #25):PBKDF2 600k→100k(CF Workers runtime 上限,真雲 bootstrap 500)+http_request 補 global_fetch_strictly_public(1042) (#56)
This commit was merged in pull request #56.
This commit is contained in:
@@ -102,6 +102,12 @@ kbdb-graph-plugin 的 `/graph/neighbors/:name` 只吃節點名,**無 owner/庫
|
||||
| argon2id | 記憶體硬化更強,但 Workers 無原生,要引 WASM 模組(新依賴+冷啟成本);Workers 128MB 記憶體下參數也開不大 |
|
||||
| bcrypt | 純 JS 實作燒 CPU(Workers CPU limit),無原生 |
|
||||
- 格式 `pbkdf2-sha256$600000$<salt_b64>$<hash_b64>` 存 `password_hash` slot(見 D-6);驗證用常數時間比對(同 PR#15 慣例)。
|
||||
- **【修訂 2026-07-14,T6-cloud 真雲實撞】迭代數 600k → 100k**:CF Workers **正式 runtime** 的
|
||||
PBKDF2 上限是 100,000(`crypto.subtle.deriveBits` 超過直接拒絕)→ `/portal/admin/bootstrap`
|
||||
真雲 500;miniflare 無此限制=本機全綠假象(證據:arcrun-rag `docs/manual/uncle6-deploy-record.md`)。
|
||||
OWASP 建議 600k 但平台封頂——儲存格式自帶迭代數(verify 從儲存值解析),未來平台放寬可無痛升。
|
||||
誠實記:600k 舊 hash 的「漸進遷移」只在 miniflare/放寬後成立,真雲 deriveBits 同樣封頂;
|
||||
所幸真雲 bootstrap 從未成功,雲端不存在 600k hash,無實際遷移面。
|
||||
- 順帶:**不動 console-auth 既有 3 輪 SHA-256**(Admin Console 現狀不動鐵律);portal 是新面、直接用對的。
|
||||
|
||||
### 4.2 決策 D-6:雜湊放 slot(KBDB),不放 CF Secrets【建議=定案傾向強】
|
||||
|
||||
@@ -130,6 +130,19 @@
|
||||
|
||||
---
|
||||
|
||||
## Bugfix(P1-P4 交付後)
|
||||
|
||||
- [x] **PBKDF2 600k → 100k(T6-cloud 部署抓到的框架蟲,2026-07-14,分支 `fix-pbkdf2-cf-limit`)**:
|
||||
CF Workers 正式 runtime PBKDF2 上限 100,000 iterations,600k 時 `crypto.subtle.deriveBits`
|
||||
直接拒絕 → `/portal/admin/bootstrap` 真雲 500(uncle6 實撞,證據 arcrun-rag
|
||||
`docs/manual/uncle6-deploy-record.md`);miniflare 無此限制=本機測試全綠假象。
|
||||
修:`portal-auth.ts` `PBKDF2_ITERATIONS` 100_000+註明平台封頂;design D-5 已加修訂註。
|
||||
verify 相容性:迭代數從儲存值解析,補測試「600k 舊 hash 仍通」(miniflare 造);誠實邊界
|
||||
=真雲 deriveBits 同樣封頂、600k hash 真雲仍拒,但真雲 bootstrap 從未成功過 → 無存量 hash、
|
||||
無遷移面。同 PR 順手:`.component-builds/http_request/wrangler.toml` 補
|
||||
`global_fetch_strictly_public` flag(self-hosted 同帳號 fetch 1042 正解,Arcrun#33 同族,
|
||||
官方行為不變原理同 cypher 前例 rules/03 1042 段)。
|
||||
|
||||
## 第二波(不在本 SDD 動工範圍,掛號)
|
||||
|
||||
- MCP token 綁庫集合(design §9;PR#15 擴充,只動 `mcp/`)
|
||||
|
||||
@@ -15,7 +15,25 @@ metadata:
|
||||
|
||||
## 📍 當前位置
|
||||
|
||||
> **2026-07-14 本 session(portal-auth P4:admin 帳號+庫管理頁——本 SDD 最後一棒,PR 待總管審不 merge)**:
|
||||
> **2026-07-14 本 session(bugfix:PBKDF2 CF runtime 上限+http_request 1042 flag,分支 `fix-pbkdf2-cf-limit`,PR 待總管審不 merge)**:
|
||||
> - **T6-cloud 部署抓到的框架蟲**:CF Workers **正式 runtime** PBKDF2 上限 100,000 iterations——
|
||||
> portal-auth 設 600k → `crypto.subtle.deriveBits` 真雲直接拒絕 → `/portal/admin/bootstrap` 500
|
||||
> (uncle6 實撞,證據 arcrun-rag `docs/manual/uncle6-deploy-record.md`)。**miniflare 無此限制=
|
||||
> 本機測試全綠的假象**(新教訓:平台 crypto 限額 miniflare 不模擬,涉 WebCrypto 參數上限的驗收
|
||||
> 只有真雲驗得出)。
|
||||
> - **修(小刀)**:`portal-auth.ts` `PBKDF2_ITERATIONS` 600_000→**100_000**+註明平台封頂(儲存
|
||||
> 格式自帶迭代數,未來放寬可無痛升);design.md D-5 加修訂註+tasks.md 加 Bugfix 記錄。
|
||||
> verify 相容性確認:迭代數從儲存值解析,**補測試「驗 600k 舊 hash 仍通」**(miniflare 造)綠;
|
||||
> 誠實邊界=真雲 deriveBits 同樣封頂、600k hash 真雲仍拒,但真雲 bootstrap 從未成功→雲端零存量
|
||||
> hash、無遷移面。
|
||||
> - **同 PR 順手(部署 agent 點名)**:`.component-builds/http_request/wrangler.toml`
|
||||
> compatibility_flags 補 `global_fetch_strictly_public`(self-hosted 同帳號 fetch 1042 正解,
|
||||
> Arcrun#33 同族;官方本就跨 zone 行為不變,原理同 cypher 前例 rules/03 1042 段)。
|
||||
> - **驗證**:cypher tsc 0;全套 169/170(唯一失敗=executor「不存在的零件」pre-existing);
|
||||
> portal 三套 56/56 全綠(含新 600k 相容測試);http_request `wrangler deploy --dry-run` 打包過。
|
||||
> - 不 merge 待總管審(B 類流程);merge 後部署仍走 gated leo21c/uncle6 wrangler 直推。
|
||||
>
|
||||
> **2026-07-14 上一輪(portal-auth P4:admin 帳號+庫管理頁——本 SDD 最後一棒,PR 待總管審不 merge)**:
|
||||
> - **實作(分支 `portal-auth-p4-admin-ui`,3+1 小步 commit)**:① `portal.ts` 補 **last-admin
|
||||
> 鎖死保護**(總管派工明定、design 未明寫)——PATCH 停用/降級「最後一個 active admin」→ 409
|
||||
> (另一 admin 是 disabled 不算數;只在目標是 active admin 且會失格時才多打一次 list,平時零成本)。
|
||||
|
||||
Reference in New Issue
Block a user