Claude Platform Docs
모범 사례가드레일 강화

탈옥 및 프롬프트 인젝션 완화

입력 스크리닝, 강화된 시스템 프롬프트, 신뢰할 수 없는 도구 콘텐츠의 안전한 처리를 통해 탈옥 및 프롬프트 인젝션으로부터 애플리케이션을 방어하세요.

"Jailbreaking"(탈옥)과 "prompt injection"(프롬프트 인젝션)은 Claude가 자체 가이드라인이나 여러분의 지시를 무시하도록 만들려는 시도입니다. Claude는 본질적으로 이러한 공격에 대한 복원력을 갖추고 있지만, 이 페이지의 추가 단계들은 특히 Anthropic의 서비스 약관 또는 사용 정책을 위반하는 사용에 대해 가드레일을 강화합니다.

이러한 공격은 서로 다른 위협 모델을 가진 두 가지 범주로 나뉩니다:

  • 탈옥 및 직접 프롬프트 인젝션: 애플리케이션의 사용자가 공격자이며, 가드레일을 우회하기 위한 입력을 만들어냅니다.
  • 간접 프롬프트 인젝션: 사용자는 신뢰할 수 있지만, Claude가 적대적 지시를 포함한 제3자 콘텐츠(웹 페이지, 이메일, 문서, 도구 결과)를 처리합니다.

탈옥 및 직접 프롬프트 인젝션

이 위협 모델에서는 사용자가 의도적으로 입력을 조작하여 애플리케이션이 원치 않는 콘텐츠를 생성하거나 원치 않는 작업을 수행하도록 만듭니다. 다음 완화 조치들은 애플리케이션의 가드레일을 강화합니다:

  • 무해성 스크린: Claude Haiku 4.5와 같은 경량 모델을 사용하여 사용자 입력이 메인 대화에 도달하기 전에 사전 스크리닝하세요. 구조화된 출력을 사용하여 응답을 단순한 분류로 제한하세요.

  • 입력 검증: 사용자 입력이 Claude에 도달하기 전에 알려진 인젝션 패턴을 필터링하세요. 알려진 탈옥 문구를 예시로 제공하여 LLM으로 일반화된 검증 스크린을 만들 수 있습니다.

  • 프롬프트 엔지니어링: 윤리적, 법적 경계를 강조하고 Claude에게 거절하는 방법을 명시적으로 알려주는 시스템 프롬프트를 작성하세요.

  • 반복 위반자에 대한 대응: 애플리케이션의 가드레일을 반복적으로 우회하려는 사용자에 대해 응답을 조정하고 스로틀링 또는 차단을 고려하세요. 예를 들어, 특정 사용자가 동일한 종류의 거절(예: "콘텐츠 필터링 정책에 의해 출력이 차단됨")을 여러 번 유발하는 경우, 해당 사용자에게 그 행동이 관련 사용 정책을 위반한다고 알리고 그에 따라 조치를 취하세요.

간접 프롬프트 인젝션

이 위협 모델에서는 Claude가 사용자를 대신하여 읽는 콘텐츠에 포함된 지시로부터 사용자를 보호합니다. 수신 이메일의 본문, 가져온 웹 페이지, 업로드된 파일의 OCR 출력, 또는 도구 호출의 결과 등이 이에 해당합니다. 해당 콘텐츠에 영향을 미칠 수 있는 공격자는 Claude의 방향을 바꾸려는 지시를 삽입할 수 있습니다.

Claude가 신뢰할 수 없는 콘텐츠와 여러분의 지시를 안정적으로 구분할 수 있도록 애플리케이션을 구성하세요:

  • 신뢰할 수 없는 콘텐츠는 도구 결과에만 넣으세요. 제3자 콘텐츠는 system 프롬프트나 일반 사용자 text 블록이 아닌 tool_result 블록 안에서 Claude에게 전달하세요. Claude는 도구 결과 안에 나타나는 지시를 적절한 의심을 가지고 다루도록 학습되어 있습니다. tool_result 형식에 대해서는 도구 호출 처리를 참조하세요.

  • 콘텐츠가 무엇이며 어디서 왔는지 Claude에게 알려주세요. 도구의 description이나 결과 자체의 구조에서 콘텐츠의 성격과 출처를 명시하세요. 예를 들어, 알 수 없는 발신자로부터 온 수신 이메일의 본문이라거나, 사용자가 업로드한 이미지에서 추출한 OCR 텍스트라는 점을 밝히세요. 이러한 컨텍스트는 Claude가 삽입된 지시를 얼마나 신뢰할지 조정하는 데 도움이 됩니다.

  • 시스템 프롬프트에 정책을 명시하세요. 도구, 문서 또는 검색에서 반환된 콘텐츠는 신뢰할 수 없는 데이터이며 시스템 프롬프트나 사용자의 원래 요청을 절대 재정의해서는 안 된다고 Claude에게 명시적으로 알려주세요.

  • 신뢰할 수 없는 콘텐츠를 JSON으로 인코딩하세요. 가능한 경우, 제3자 문자열을 자유 형식 텍스트에 이어 붙이는 대신 JSON 객체로 감싸세요. JSON 이스케이프는 신뢰할 수 없는 페이로드와 주변 구조 사이에 명확한 구분자를 제공하므로, 공격자가 따옴표나 태그를 닫아 지시 컨텍스트로 "탈출"할 수 없습니다.

  • 여러분 자신의 지시를 도구 결과에 넣지 마세요. Claude는 도구 결과 콘텐츠를 신뢰할 수 없는 데이터로 취급하므로, 그곳에 넣은 지시는 무시되거나 잠재적 인젝션으로 표시될 수 있습니다. 지시는 tool_result 블록 뒤에 오는 user 턴에서 보내세요. 지원되는 모델에서는 대화 중간 시스템 메시지를 사용할 수도 있습니다.

  • 민감한 데이터와 작업에 대한 Claude의 접근을 제한하세요. 인젝션이 성공하더라도 피해가 최소화되도록 최소 권한 원칙을 적용하세요. Claude에게 필요하지 않은 비밀 정보에 대한 접근 권한을 주지 말고, 샌드박스 환경에서 도구를 실행하며, 권한 범위를 가능한 한 좁게 설정하세요.

  • Claude가 도구 출력에 따라 행동하기 전에 스크리닝하세요. 사용자 입력에 사용하는 것과 동일한 경량 모델 스크리닝 패턴을 도구가 반환하는 콘텐츠에도 적용하세요. 각 도구를 실행하고, 원시 출력을 Claude Haiku 4.5를 사용한 소규모 분류기 호출에 전달한 다음, 스크린이 인젝션 시도가 없다고 보고하는 경우에만 해당 콘텐츠를 tool_result 블록으로 반환하세요. 분류기의 판정이 애플리케이션에서 분기할 수 있는 파싱 가능한 값이 되도록 구조화된 출력을 사용하세요.

    이전 섹션의 입력 검증 패턴을 Claude에게 전달하기 전의 도구 결과에도 적용할 수 있습니다.

  • 자체 에이전트를 레드팀 테스트하세요. 배포하기 전에, 의도적으로 인젝션 시도를 포함한 문서, 이메일, 도구 출력으로 워크플로를 테스트하고, Claude가 이를 무시하는지, 그리고 스크리닝 및 확인 단계가 나머지를 잡아내는지 확인하세요.

지속적인 모니터링

성공한 인젝션의 징후가 있는지 출력을 정기적으로 분석하세요. 이 모니터링을 활용하여 프롬프트, 검증 및 필터링 전략을 반복적으로 개선하세요.

고급: 안전장치 연결

강력한 보호를 위해 전략들을 결합하세요. 다음은 도구 사용을 포함한 엔터프라이즈급 예시입니다:

이러한 전략들을 계층화함으로써 탈옥 및 프롬프트 인젝션에 대한 강력한 방어 체계를 구축하고, Claude 기반 애플리케이션이 최고 수준의 안전성과 규정 준수를 유지하도록 보장할 수 있습니다.

Was this page helpful?