본문 바로가기
C.W.K.
Stream
Lesson 02 of 10 · published

심층 방어 — 임시 처방이 아니라 여러 겹

~16 min · security, defense-in-depth

Level 0수련생
0 XP0/100 lessons0/14 achievements
0/120 XP to next level120 XP to go0% complete

한 겹으로는 부족해

실제로 작동하는 방어는 여러 겹이 쌓여 있어. 각 층은 일부 공격만 잡고 어느 하나도 전부 막지는 못해. 함께 쓸 때 공격 비용을 높이고 피해가 번질 면적을 줄여.

쌓아 올릴 여섯 층

  1. 프롬프트의 신뢰 경계 — 믿지 않는 내용을 분명한 태그로 감싸고 자료 구역의 명령을 따르지 말라고 해.
  2. 권한 범위 제한 — 모델에는 필요한 도구만 주고 나머지는 닿지 못하게 해.
  3. 입력 필터 — 알려진 악성 패턴을 찾고 위험한 입력은 별도 경로로 보내.
  4. 출력 필터 — 민감정보 유출, 숨은 URL, 공격 징후를 모델 출력에서 검사해.
  5. 검증 반복 — 이메일 발송 같은 구조화 행동은 실행 전에 업무 규칙에 대조해.
  6. 감사 기록 — 모든 입력, 출력, 도구 호출을 만든 프롬프트 버전과 함께 남겨.

피해 반경에 맞춰 비용을 써

각 층은 지연 시간과 복잡성, 오탐 비용을 더해. 모든 곳에 전부 붙이지 말고 피해 반경에 맞춰 골라. 요약 끝점은 환불을 승인하는 에이전트보다 가벼운 방어로 충분할 수 있어.

Code

출력 필터 계층 개요·python
import re

DANGEROUS_PATTERNS = [
    re.compile(r"<img[^>]*src=['\"]http"),     # exfil via image
    re.compile(r"\!\[.*\]\(http.+\?.*="),     # exfil via markdown
    re.compile(r"\b(?:[A-Za-z0-9._%+-]+)@(?:[A-Za-z0-9-]+\.)+[A-Za-z]{2,}\b"),  # raw email
]

def sanitize(output: str) -> str:
    for p in DANGEROUS_PATTERNS:
        output = p.sub("[redacted]", output)
    return output

External links

Exercise

끝점 하나에 적용된 방어층을 모두 나열해봐. 피해 반경에 비해 빠진 층 하나를 찾아 추가해.

Progress

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

댓글 0

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

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