「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?