Fail Open vs Fail Closed
失敗放行 vs 失敗阻擋
01你是不是遇到這個 / THE SYMPTOM
我的權限檢查或某個外部服務(驗證、付款、風控)如果掛掉或逾時,我不知道該讓使用者「照樣通過」還是「直接擋下來」。萬一寫錯邊,可能變成出錯時誰都進得來、或出錯時全部人都被鎖在外面。
↑ 如果你點頭了,你要的關鍵字就是 Fail Open vs Fail Closed。
02這是什麼 / DEFINITION
描述系統「在自身故障時」要倒向哪一邊的安全策略:fail open(失敗放行)= 出錯時預設允許、保可用性;fail closed(失敗阻擋)= 出錯時預設拒絕、保安全性。
03什麼時候用 / WHEN TO USE
設計權限/驗證/限流/付款這類關卡時必須明確選一邊:安全敏感的(登入、付款、權限)通常 fail closed 寧可擋錯也不放錯;可用性優先、風險低的(如非關鍵的功能旗標、推薦系統)才考慮 fail open。
04怎麼跟 AI 說 / HOW TO ASK
直接複製這句、貼進 Claude Code / Cursor / Copilot / ChatGPT:
這個權限檢查的外部服務逾時或回傳錯誤時,幫我改成 fail closed(預設拒絕存取)而不是 fail open,並記一筆錯誤 log。
05常見坑 / WATCH OUT
⚠ 最危險的是「沒有刻意決定」——很多 fail open 漏洞是 try/catch 裡 catch 到錯誤後直接 return true 或忽略造成的,等於出錯就放行。安全相關的地方務必預設 fail closed,且要明確寫出來而非靠預設行為。
06相關的詞 / RELATED