11장 출력 인코딩과 데이터 유출 경로를 막는다
비밀이 도구 호출에 직접 들어가지 않아도 URL, 이미지 주소, 마크다운 링크, 오류 메시지, 로그, DNS 이름 같은 출력 경로로 새어 나갈 수 있다. 모델 출력은 표시용 텍스트와 실행 가능한 값으로 나누고, 링크·파일 경로·네트워크 목적지를 별도 검증한다.
사용자 화면에 HTML을 표시한다면 문맥에 맞게 이스케이프하고 임의 스크립트·이벤트 속성을 허용하지 않는다. 마크다운 렌더러도 외부 이미지 자동 로드, javascript: URL, 예상 밖 스킴을 막는다. 비밀 패턴 탐지는 마지막 안전망일 뿐, 모델이 비밀을 읽을 권한 자체를 갖지 않는 것이 우선이다.
허용 링크: https, 승인된 도메인
금지: javascript, data, file, 내부 IP, 자격 포함 URL
외부 이미지: 기본 비활성
오류: 사용자 메시지와 내부 진단 분리
로그: 토큰·쿠키·문서 원문 제외
실습 11 유출 채널 표
가상 비밀 FIXTURE-SECRET-42가 답변 본문, 링크 쿼리, 이미지 URL, 로그 필드, 파일명에 들어간 다섯 사례를 만든다. 모두 외부 전송 전에 차단되고 비밀 값 자체가 감사 로그에 복제되지 않아야 한다.