「Jailbreaking」(越獄)與「prompt injection」(提示注入)是試圖讓 Claude 忽略其準則或您的指令的攻擊手法。雖然 Claude 本身對此類攻擊具有相當的抵禦能力,但本頁面所述的額外步驟可強化您的防護機制,特別是針對違反 Anthropic 服務條款或使用政策的使用行為。
這些攻擊可分為兩類,各自具有不同的威脅模型:
在此威脅模型中,使用者刻意設計輸入內容,企圖操縱您的應用程式產生您不希望的內容或執行您不希望的動作。以下緩解措施可強化您應用程式的防護機制:
無害性篩檢: 使用輕量級模型(如 Claude Haiku 4.5)在使用者輸入進入主要對話之前進行預先篩檢。使用結構化輸出將回應限制為簡單的分類結果。
輸入驗證: 在使用者輸入到達 Claude 之前,過濾已知的注入模式。您可以提供已知的越獄語言作為範例,使用 LLM 建立通用的驗證篩檢機制。
提示工程: 撰寫強調道德與法律界限的系統提示,並明確告知 Claude 如何拒絕。
回應屢次違規者: 對於反覆嘗試規避您應用程式防護機制的使用者,調整回應方式並考慮限流或封鎖。例如,若特定使用者多次觸發同類型的拒絕(如「輸出已被內容過濾政策封鎖」),請告知該使用者其行為違反相關使用政策,並採取相應措施。
在此威脅模型中,您要保護的是使用者,防範 Claude 代表他們讀取的內容中所嵌入的指令:例如收到的電子郵件內文、擷取的網頁、上傳檔案的 OCR 輸出,或工具呼叫的結果。能夠影響該內容的攻擊者可能會嵌入試圖重新導向 Claude 的指令。
請建構您的應用程式,使 Claude 能可靠地區分不受信任的內容與您的指令:
僅將不受信任的內容放在工具結果中。 將第三方內容透過 tool_result 區塊傳遞給 Claude,切勿放在 system 提示或一般使用者 text 區塊中。Claude 經過訓練,會以適當的懷疑態度對待出現在工具結果中的指令。關於 tool_result 格式,請參閱處理工具呼叫。
告知 Claude 內容的性質與來源。 在工具的 description 中,或在結果本身的結構中,明確說明內容的性質與來源:例如,這是來自未知寄件者的電子郵件內文,或是從使用者上傳圖片中擷取的 OCR 文字。此上下文有助於 Claude 判斷應對嵌入指令給予多少信任。
在系統提示中說明政策。 明確告知 Claude,從工具、文件或搜尋傳回的內容屬於不受信任的資料,絕不能凌駕於系統提示或使用者的原始請求之上。
對不受信任的內容進行 JSON 編碼。 盡可能將第三方字串包裝在 JSON 物件中,而非串接到自由格式的文字中。JSON 跳脫處理在不受信任的內容與周圍結構之間提供明確的分隔符號,使攻擊者無法關閉引號或標籤來「跳脫」至指令上下文。
不要將您自己的指令放在工具結果中。 由於 Claude 將工具結果內容視為不受信任的資料,您放在其中的指令可能會被忽略或被標記為潛在的注入攻擊。請在 tool_result 區塊之後的 user 回合中傳送您的指令。在支援的模型上,您也可以使用對話中途系統訊息。
限制 Claude 對敏感資料與動作的存取權限。 套用最小權限原則,使成功的注入攻擊所能造成的損害降至最低:不要讓 Claude 存取不需要的機密資訊、在沙箱環境中執行工具,並盡可能縮小權限範圍。
在 Claude 採取行動之前篩檢工具輸出。 將您用於使用者輸入的輕量級模型篩檢模式,同樣套用於工具傳回的內容。執行每個工具後,將其原始輸出傳遞給使用 Claude Haiku 4.5 的小型分類器呼叫,只有在篩檢結果顯示沒有注入嘗試時,才將內容作為 tool_result 區塊傳回。使用結構化輸出,使分類器的判定結果成為您的應用程式可據以分支處理的可解析值。
您也可以將前一節的輸入驗證模式套用於工具結果,再將其傳遞給 Claude。
對您自己的代理進行紅隊測試。 在部署之前,使用刻意包含注入嘗試的文件、電子郵件和工具輸出來測試您的工作流程,並確認 Claude 會忽略這些內容,且您的篩檢與確認步驟能攔截其餘的攻擊。
定期分析輸出內容,尋找注入成功的跡象。利用此監控結果反覆改進您的提示、驗證與過濾策略。
結合多種策略以實現穩健的防護。以下是一個使用工具使用的企業級範例:
透過分層運用這些策略,您可以建立對抗越獄與提示注入的穩健防禦機制,確保您以 Claude 為基礎的應用程式維持最高的安全與合規標準。
Was this page helpful?