越獄(jailbreaking)和提示注入(prompt injection)是試圖讓 Claude 忽略其準則或您的指令的攻擊手法。雖然 Claude 本身對此類攻擊具有相當的抵抗力,但本頁面提供的額外步驟可強化您的防護措施,特別是針對違反我們服務條款或使用政策的使用行為。
這些攻擊可分為兩類,各有不同的威脅模型:
在此威脅模型中,使用者刻意設計輸入內容,企圖操縱您的應用程式產生您不希望的內容或執行您不希望的動作。以下緩解措施可強化您應用程式的防護:
無害性篩選: 使用輕量級模型(如 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 Opus 4.8 及更新版本中,您也可以使用對話中途系統訊息。
限制 Claude 對敏感資料與動作的存取權限。 套用最小權限原則,使成功的注入攻擊所能造成的損害降至最低:不要讓 Claude 存取不需要的機密資訊、在沙箱環境中執行工具,並盡可能縮小權限範圍。
在 Claude 採取行動之前篩選工具輸出。 將您用於使用者輸入的輕量級模型篩選模式,同樣套用到工具傳回的內容上。執行每個工具後,將其原始輸出傳遞給使用 Claude Haiku 4.5 的小型分類器呼叫,只有在篩選結果回報沒有注入嘗試時,才將內容作為 tool_result 區塊傳回。使用結構化輸出,使分類器的判定結果成為您的應用程式可以解析並據以分支處理的值。
您也可以將上一節中的輸入驗證模式套用到工具結果,再將其傳遞給 Claude。
對您自己的代理程式進行紅隊測試。 在部署之前,使用刻意包含注入嘗試的文件、電子郵件和工具輸出來測試您的工作流程,並確認 Claude 會忽略這些注入,且您的篩選與確認步驟能攔截其餘的攻擊。
定期分析輸出內容,尋找注入成功的跡象。利用此監控結果反覆改進您的提示、驗證與過濾策略。
結合多種策略以實現穩健的防護。以下是一個使用工具的企業級範例:
透過分層運用這些策略,您可以建立對抗越獄與提示注入的穩健防禦,確保您以 Claude 為基礎的應用程式維持最高的安全與合規標準。
Was this page helpful?