C.W.K.
Stream
Lesson 01 of 05 · published

Killswitch — 단일 가장 가치 있는 버튼

~15 min · killswitch, ui, bookmarks

Level 0Greenhorn
0 XP0/53 lessons0/14 achievements
0/100 XP to next level100 XP to go0% complete

이 퀘스트의 모든 layer 가 한 순간을 위해 봉사해 — 디바이스 사라졌다고 깨닫는 날. Killswitch 가 그 순간에 하는 거. 필요한 거: 빠름 (한 클릭), 완전 (모든 쿠키 죽임), 복구 가능 (다시 로그인 가능), 다른 디바이스에서 도달 가능.

구체적 의미의 "killswitch"

액션영향SQL
모든 Session Revoke어디든 모든 브라우저 session 이 다음 요청에 logoutDELETE FROM security_sessions
PIN 전역 비활성 (하지 마)auth 통째 우회하는 플래그 set절대 — 원하는 거의 정반대
특정 IP blacklist 추가그 source IP 가 로그인 시도조차 못 함INSERT INTO security_blacklist
Retry limit 일시적 강화incident 동안 max_retry 5에서 2로UPDATE security_config SET max_retry = 2

UI — 크고 빨갛게

버튼이 panic 상태에서 찾을 수 있어야 해. confirm dialog 한 번 뒤에 숨겨 ("active session 3개 다 revoke?") — misclick 이 하루 망치지 않게 — 근데 더는 X — 추가 클릭마다 네 거 노출되는 1초.

Code

엔드포인트 (audit logging 포함)·python
@app.post("/admin/security/revoke-all")
async def revoke_all(request: Request):
    require_admin(request)
    cur = db.execute("DELETE FROM security_sessions")
    db.commit()
    audit_log("revoke_all", actor_ip=client_ip(request), count=cur.rowcount)
    return {"revoked": cur.rowcount}
버튼 — 크고, 빨갛고, confirm 한 번·html
<button
  class="btn-danger"
  onclick="if(confirm('모든 active session revoke? 모든 디바이스가 PIN 다시 입력해야.')) revokeAll()"
>
  🚨 Revoke All Sessions
</button>

External links

Exercise

/admin/security/revoke-all 와 큰 빨간 버튼을 simple admin 페이지에 추가. 노트북, (있으면) 다른 노트북, 폰, 태블릿에 페이지 북마크. 시간 측정: '노트북 열기' 부터 'confirm 클릭' 까지 가장 느린 디바이스는? 30초 넘으면 UX 버그.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.