Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Prompt engineering para programación, Unidad 8 — Seguridad y buenas prácticas, 8.2 — Prompts seguros ·

Auditoría básica

Auditoría básica para prompts seguros

Introducción

La seguridad es una de las preocupaciones más importantes al trabajar con inteligencia artificial (IA) y programación. Cuando se utilizan LLMs (Modelos de Máquinas de Lenguaje Generativa, o Lenguajes de Modelado de Máquina de Lenguaje), la auditoría básica de los prompts es fundamental para garantizar que el código generado no solo sea correcto y eficaz, sino también seguro. En esta unidad, exploraremos cómo llevar a cabo una auditoría básica en los prompts utilizados para generar, explicar, depurar o refactorizar código.

Explicación principal con ejemplos

La auditoría de prompts implica verificar que el contenido del prompt no contenga información insegura ni patrones peligrosos. Aquí te presentamos un ejemplo de cómo estructurar un prompt seguro:

**Prompt Seguro:**
Genera una función en Python para calcular la suma de dos números enteros. No use ninguna biblioteca externa y asegúrate de manejar valores fuera del rango válido para int32.

Errores típicos / trampas

  1. Inyección SQL o code injection: Un prompt que incluya código mal formateado puede ser susceptible a inyecciones de código.
    **Error:**
    Genera una consulta SQL para insertar datos en la base de datos, asegúrate de escapar los valores.
    
    **Correcto:**
    Genera una consulta SQL para insertar datos en la base de datos y escapa automáticamente todos los valores.
  1. Uso de funciones peligrosas: Algunos prompts pueden incluir llamadas a funciones que no son seguras o confiables.
    **Error:**
    Crea una función que calcule el factorial de un número usando recursión.
    
    **Correcto:**
    Crea una función que calcule el factorial de un número usando iteración para evitar problemas con la recursividad profunda y posibles colas de pila.
  1. Manejo inadecuado de datos: Los prompts que no manejan correctamente los tipos de datos pueden llevar a errores críticos.
    **Error:**
    Genera una función en JavaScript para convertir grados Celsius a Fahrenheit, asegúrate de usar solo números enteros.
    
    **Correcto:**
    Genera una función en JavaScript para convertir grados Celsius a Fahrenheit, asegúrate de usar cualquier tipo numérico y redondear el resultado si es necesario.

Checklist accionable

  1. Verifica la entrada: Asegúrate de que todas las entradas sean válidas y se manejen correctamente.
  2. Elimina inyecciones: Verifica que no existan patrones de código que puedan ser utilizados para inyectar malicioso código.
  3. Evita funciones peligrosas: Identifica y evita la uso de funciones conocidas por sus riesgos, como eval() en Python.
  4. Comprueba el manejo de errores: Verifica que todos los casos límite sean cubiertos y manejados adecuadamente.
  5. Asegúrate de validaciones: Agrega validaciones para cualquier entrada o salida que puedan afectar la seguridad del sistema.
  6. Evalúa el contexto: Comprueba si el prompt proporciona suficiente contexto a la IA, asegurándote de que no se utilicen datos incorrectos.
  7. Comprueba la lógica: Analiza la lógica propuesta para garantizar que no contenga errores críticos o inseguros.
  8. Documenta el proceso: Documenta todos los prompts y decisiones tomadas durante el proceso de generación de código.
  9. Realiza pruebas unitarias: Asegúrate de tener una cobertura adecuada con pruebas unitarias para cualquier código generado.
  10. Revisa manualmente: Aunque la IA es útil, nunca reemplaza la revisión manual por parte del desarrollador.

Cierre: Siguientes pasos

  • Adopta prácticas de seguridad: Incorpora las mejores prácticas de seguridad en tu flujo de trabajo habitual.
  • Educa a la equipo: Comparte tus hallazgos y estrategias con otros miembros del equipo para fortalecer la cultura de seguridad.
  • Mantén actualizado: Sigue las últimas tendencias y amenazas relacionadas con la seguridad en desarrollo de software.

Siguiendo estos pasos, puedes asegurarte de que los prompts utilizados en el proceso de generación de código sean seguros y efectivos.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).