«Jailbreaking» (джейлбрейк) и «prompt injection» (инъекция подсказок) — это попытки заставить Claude игнорировать свои руководящие принципы или ваши инструкции. Хотя Claude изначально устойчив к подобным атакам, дополнительные меры, описанные на этой странице, укрепляют ваши защитные механизмы, особенно против использования, нарушающего Условия обслуживания или Политику использования Anthropic.
Эти атаки делятся на две категории с разными моделями угроз:
В этой модели угроз пользователь намеренно формирует входные данные, чтобы заставить ваше приложение создавать контент или выполнять действия, которые вы не хотите допускать. Следующие меры укрепляют защитные механизмы вашего приложения:
Проверка на безвредность: Используйте лёгкую модель, такую как Claude Haiku 4.5, для предварительной проверки пользовательского ввода до того, как он попадёт в основной диалог. Используйте структурированные выходные данные, чтобы ограничить ответ простой классификацией.
Валидация входных данных: Фильтруйте пользовательский ввод на предмет известных шаблонов инъекций до того, как он попадёт к Claude. Вы можете использовать LLM для создания обобщённой проверки валидации, предоставив известные формулировки джейлбрейков в качестве примеров.
Инженерия подсказок: Составляйте системные подсказки, которые подчёркивают этические и правовые границы и явно указывают Claude, как отказывать.
Реагируйте на повторных нарушителей: Корректируйте ответы и рассмотрите возможность ограничения или блокировки пользователей, которые неоднократно пытаются обойти защитные механизмы вашего приложения. Например, если определённый пользователь несколько раз вызывает один и тот же тип отказа (например, «вывод заблокирован политикой фильтрации контента»), сообщите пользователю, что его действия нарушают соответствующие политики использования, и примите соответствующие меры.
В этой модели угроз вы защищаете своих пользователей от инструкций, встроенных в контент, который Claude читает от их имени: тело входящего электронного письма, загруженная веб-страница, результат OCR из загруженного файла или результат вызова инструмента. Злоумышленник, способный влиять на этот контент, может встроить инструкции, пытающиеся перенаправить Claude.
Структурируйте своё приложение так, чтобы Claude мог надёжно отличать недоверенный контент от ваших инструкций:
Помещайте недоверенный контент только в результаты инструментов. Передавайте сторонний контент Claude внутри блоков tool_result, а не в системных подсказках (system) или обычных текстовых блоках пользователя (text). Claude обучен относиться к инструкциям, появляющимся внутри результатов инструментов, с надлежащим скептицизмом. Формат tool_result описан в разделе Обработка вызовов инструментов.
Сообщайте Claude, что это за контент и откуда он взялся. В поле description инструмента или в структуре самого результата явно укажите характер и источник контента: например, что это тело входящего электронного письма от неизвестного отправителя или текст OCR, извлечённый из загруженного пользователем изображения. Этот контекст помогает Claude оценить, насколько можно доверять встроенным директивам.
Укажите политику в системной подсказке. Явно сообщите Claude, что контент, возвращаемый инструментами, документами или поиском, является недоверенными данными и никогда не должен переопределять системную подсказку или исходный запрос пользователя.
Кодируйте недоверенный контент в JSON. По возможности оборачивайте сторонние строки в JSON-объект, а не конкатенируйте их в произвольный текст. Экранирование JSON обеспечивает однозначные разделители между недоверенной полезной нагрузкой и окружающей структурой, поэтому злоумышленник не сможет закрыть кавычку или тег, чтобы «вырваться» в контекст инструкций.
Не помещайте собственные инструкции в результаты инструментов. Поскольку Claude рассматривает содержимое результатов инструментов как недоверенные данные, размещённые там инструкции могут быть проигнорированы или помечены как потенциальная инъекция. Отправляйте свои инструкции в ходе user, следующем за блоком tool_result. В поддерживаемых моделях вы также можете использовать системное сообщение в середине диалога.
Ограничьте доступ Claude к конфиденциальным данным и действиям. Применяйте принцип наименьших привилегий, чтобы успешная инъекция могла нанести минимальный ущерб: не давайте Claude доступ к секретам, которые ему не нужны, запускайте инструменты в изолированных средах и ограничивайте разрешения как можно более узко.
Проверяйте выходные данные инструментов до того, как Claude начнёт действовать на их основе. Применяйте тот же шаблон проверки с помощью лёгкой модели, который вы используете для пользовательского ввода, к контенту, возвращаемому вашими инструментами. Запустите каждый инструмент, передайте его необработанный вывод в небольшой вызов классификатора с Claude Haiku 4.5 и возвращайте контент в виде блока tool_result только в том случае, если проверка не выявила попытки инъекции. Используйте структурированные выходные данные, чтобы вердикт классификатора был разбираемым значением, на основе которого ваше приложение может принимать решения.
Вы также можете применять шаблоны валидации входных данных из предыдущего раздела к результатам инструментов перед их передачей Claude.
Проводите red-team-тестирование собственного агента. Перед развёртыванием протестируйте свой рабочий процесс с документами, электронными письмами и выходными данными инструментов, которые намеренно содержат попытки инъекций, и убедитесь, что Claude их игнорирует, а ваши этапы проверки и подтверждения отлавливают остальное.
Регулярно анализируйте выходные данные на предмет признаков успешной инъекции. Используйте этот мониторинг для итеративного совершенствования ваших подсказок, валидации и стратегий фильтрации.
Комбинируйте стратегии для надёжной защиты. Вот пример корпоративного уровня с использованием инструментов:
Комбинируя эти стратегии, вы создаёте надёжную защиту от джейлбрейков и инъекций подсказок, обеспечивая соответствие ваших приложений на базе Claude самым высоким стандартам безопасности и соблюдения требований.
Was this page helpful?