Skip to content

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