Fail-open handling

오류 시 허용 실패

Letting a request pass when a security check errors creates a bypass path.

···
html
<div class="sd"><div class="sd-head"><strong>FAIL OPEN</strong><span id="state">live check</span></div><div class="sd-stage"><div class="fo-error">POLICY CHECK: ERROR</div><div class="fo-split"><div class="fo-lane"><span>fail open</span><div id="open-door">OPEN</div><b>request passes</b></div><div class="fo-lane"><span>fail closed</span><div id="closed-door">CLOSED</div><b>request stops</b></div></div></div><div class="sd-foot"><span id="caption">checking boundary</span><span>tap to step</span></div></div>
css
.sd{box-sizing:border-box;width:min(94vw,700px);height:min(86vh,318px);padding:clamp(9px,2.3vmin,18px);border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--fg);display:flex;flex-direction:column;gap:clamp(6px,1.8vmin,12px);font:600 clamp(12px,2.6vmin,16px)/1.25 var(--font-sans, sans-serif)}.sd *{box-sizing:border-box}.sd-head,.sd-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:1.25em}.sd-head strong{color:var(--accent);letter-spacing:.06em}.sd-head span,.sd-foot{color:var(--muted)}.sd-foot{font-size:clamp(12px,2.4vmin,14px)}.sd-stage{position:relative;flex:1;min-height:0;display:flex;align-items:center;justify-content:center;gap:clamp(6px,2vmin,18px);overflow:hidden}.sd .mono{font-family:ui-monospace,monospace}.sd .tile{border:1px solid var(--line);border-radius:8px;background:var(--bg);padding:clamp(5px,1.5vmin,10px);text-align:center}.sd .good{color:var(--accent);border-color:var(--accent)}.sd .bad{color:var(--accent-3);border-color:var(--accent-3)}.sd .arrow{color:var(--muted);font-size:clamp(15px,4vmin,28px)}.sd .active{background:color-mix(in srgb,var(--accent) 16%,var(--surface));border-color:var(--accent)}.sd .blocked{background:color-mix(in srgb,var(--accent-3) 13%,var(--surface));border-color:var(--accent-3)}.sd-stage{flex-direction:column;gap:clamp(5px,1.4vmin,9px)}.fo-error{border:1px dashed var(--accent-3);border-radius:5px;padding:clamp(3px,1vmin,7px);color:var(--accent-3)}.fo-split{display:flex;gap:clamp(6px,2vmin,14px);width:min(100%,490px)}.fo-lane{flex:1;display:grid;justify-items:center;gap:clamp(3px,1vmin,6px);border:1px solid var(--line);border-radius:8px;padding:clamp(5px,1.4vmin,10px);text-align:center}.fo-lane>div{width:70%;border:2px solid var(--line);border-radius:5px;padding:clamp(4px,1.2vmin,8px);transition:all .2s}.fo-lane b{color:var(--muted);font-weight:600}.fo-lane:first-child.active>div{border-color:var(--accent-3);color:var(--accent-3);background:color-mix(in srgb,var(--accent-3) 15%,var(--surface))}.fo-lane:last-child.active>div{border-color:var(--accent);color:var(--accent);background:color-mix(in srgb,var(--accent) 15%,var(--surface))}
js
let n=0;function advance(){n=1-n;document.querySelectorAll('.fo-lane').forEach((e,i)=>e.classList.toggle('active',i===n));document.getElementById('state').textContent=n?'safe default':'unsafe default';document.getElementById('caption').textContent=n?'error denies and rolls back':'error accidentally grants access'}advance();setInterval(advance,900);
document.querySelector('.sd').addEventListener('pointerdown',advance);

Fail-open handling is a security flaw in which authorization or another guard allows an operation after an exception or timeout. If missing evidence is treated as approval, an attacker can target the failing check.

The demo compares open and closed outcomes for the same guard error. Log and alert on the fault, roll back state changes, and return a safe denial.

When to use

Check guards such as authorization, policy engines, risk checks, and payment validation.

Open as page ↗