El jailbreaking y la inyección de prompts son intentos de hacer que Claude ignore sus directrices o tus instrucciones. Aunque Claude es inherentemente resistente a este tipo de ataques, los pasos adicionales de esta página refuerzan tus barreras de protección, particularmente contra usos que violan nuestros Términos de Servicio o nuestra Política de Uso.
Estos ataques se dividen en dos categorías con modelos de amenaza diferentes:
En este modelo de amenaza, un usuario elabora deliberadamente entradas para manipular tu aplicación y hacer que produzca contenido o realice acciones que no deseas. Estas mitigaciones refuerzan las barreras de protección de tu aplicación:
Filtros de inocuidad: Usa un modelo ligero como Claude Haiku 4.5 para prefiltrar la entrada del usuario antes de que llegue a tu conversación principal. Usa salidas estructuradas para restringir la respuesta a una clasificación simple.
Validación de entrada: Filtra la entrada del usuario en busca de patrones de inyección conocidos antes de que llegue a Claude. Puedes usar un LLM para crear un filtro de validación generalizado proporcionando lenguaje de jailbreaking conocido como ejemplos.
Ingeniería de prompts: Elabora indicaciones del sistema que enfaticen los límites éticos y legales, y que indiquen explícitamente a Claude cómo rechazar solicitudes.
Responder a infractores reincidentes: Ajusta las respuestas y considera limitar o bloquear a los usuarios que intenten repetidamente eludir las barreras de protección de tu aplicación. Por ejemplo, si un usuario en particular activa el mismo tipo de rechazo varias veces (como "salida bloqueada por la política de filtrado de contenido"), informa al usuario que sus acciones violan las políticas de uso correspondientes y actúa en consecuencia.
En este modelo de amenaza, estás protegiendo a tus usuarios de instrucciones incrustadas en contenido que Claude lee en su nombre: el cuerpo de un correo electrónico entrante, una página web recuperada, la salida de OCR de un archivo cargado o el resultado de una llamada a herramienta. Un atacante que pueda influir en ese contenido podría incrustar instrucciones que intenten redirigir a Claude.
Estructura tu aplicación de modo que Claude pueda distinguir de forma fiable el contenido no confiable de tus instrucciones:
Coloca el contenido no confiable únicamente en resultados de herramientas. Entrega el contenido de terceros a Claude dentro de bloques tool_result, nunca en indicaciones system ni en bloques text simples del usuario. Claude está entrenado para tratar las instrucciones que aparecen dentro de los resultados de herramientas con el escepticismo apropiado. Consulta Gestionar llamadas a herramientas para conocer el formato de tool_result.
Indica a Claude qué es el contenido y de dónde proviene. En la description de la herramienta, o en la estructura del propio resultado, haz explícita la naturaleza y el origen del contenido: por ejemplo, que es el cuerpo de un correo electrónico entrante de un remitente desconocido, o texto de OCR extraído de una imagen cargada por el usuario. Este contexto ayuda a Claude a calibrar cuánto confiar en las directivas incrustadas.
Declara la política en tu indicación del sistema. Indica explícitamente a Claude que el contenido devuelto por herramientas, documentos o búsquedas son datos no confiables y nunca deben anular la indicación del sistema ni la solicitud original del usuario.
Codifica en JSON el contenido no confiable. Cuando sea posible, envuelve las cadenas de terceros en un objeto JSON en lugar de concatenarlas en texto libre. El escapado de JSON proporciona delimitadores inequívocos entre la carga útil no confiable y la estructura circundante, de modo que un atacante no puede cerrar una comilla o etiqueta para "escapar" hacia un contexto de instrucciones.
No coloques tus propias instrucciones en los resultados de herramientas. Dado que Claude trata el contenido de los resultados de herramientas como datos no confiables, las instrucciones que coloques allí podrían ser ignoradas o marcadas como una posible inyección. Envía tus instrucciones en un turno user que siga al bloque tool_result. En Claude Opus 4.8 y versiones posteriores, también puedes usar un mensaje del sistema a mitad de conversación.
Limita el acceso de Claude a datos y acciones sensibles. Aplica el principio de mínimo privilegio para que una inyección exitosa pueda causar el menor daño posible: no le des a Claude acceso a secretos que no necesita, ejecuta las herramientas en entornos aislados (sandbox) y limita los permisos al mínimo necesario.
Filtra las salidas de las herramientas antes de que Claude actúe sobre ellas. Aplica el mismo patrón de filtrado con un modelo ligero que usas para la entrada del usuario al contenido que devuelven tus herramientas. Ejecuta cada herramienta, pasa su salida sin procesar a una pequeña llamada de clasificación con Claude Haiku 4.5 y solo devuelve el contenido como un bloque tool_result si el filtro no reporta ningún intento de inyección. Usa salidas estructuradas para que el veredicto del clasificador sea un valor analizable sobre el que tu aplicación pueda ramificar su lógica.
También puedes aplicar los patrones de validación de entrada de la sección anterior a los resultados de las herramientas antes de pasarlos a Claude.
Realiza pruebas de red team a tu propio agente. Antes de desplegar, prueba tu flujo de trabajo con documentos, correos electrónicos y salidas de herramientas que contengan deliberadamente intentos de inyección, y confirma que Claude los ignora y que tus pasos de filtrado y confirmación detectan el resto.
Analiza regularmente las salidas en busca de señales de inyecciones exitosas. Usa este monitoreo para refinar iterativamente tus prompts, validación y estrategias de filtrado.
Combina estrategias para obtener una protección robusta. Aquí tienes un ejemplo de nivel empresarial con uso de herramientas:
Al combinar estas estrategias en capas, creas una defensa robusta contra el jailbreaking y las inyecciones de prompts, asegurando que tus aplicaciones basadas en Claude mantengan los más altos estándares de seguridad y cumplimiento.
Was this page helpful?