입력 검증과 격리 구조로 프롬프트 인젝션을 방어하는 방법을 푸는 결
프롬프트 인젝션은 사용자 입력이 시스템 프롬프트의 맥락을 덮어쓰거나 우회하는 공격입니다. 방어 접근에서 가장 먼저 생각하는 건 사용자 입력과 시스템 지시를 구조적으로 분리하는 것입니다. 예를 들어 입력을 별도 변수에 담아 프롬프트 템플릿과 명확히 구분하면, 사용자가 '이전 지시를 무시하고...' 같은 문구를 넣어도 시스템 영역에 닿기 어려워집니다. 또 출력 검증 레이어를 두어 모델 응답이 허용 범위를 벗어나면 차단하는 방식도 효과적입니다.
신뢰할 수 없는 입력은 그냥 텍스트로만 처리하고, 도구 호출이나 명령 실행과 연결하지 않는 것도 기본 원칙입니다. 공부하면서 실제로 작은 챗봇에 역할 탈취 프롬프트를 넣어봤는데, 시스템 프롬프트를 앞에 고정하고 사용자 입력 앞에 레이블을 붙이는 것만으로도 단순 공격은 상당히 걸러졌습니다. 지속적 방어는 패턴이 계속 바뀌기 때문에 red teaming을 주기적으로 하는 것이 필요하다고 봅니다.