Café y Código

16. Seguridad y calidad: Bandit + SonarQube 🛡️

Propósito del módulo final

En este cierre del curso trabajas una ruta profesional de revisión de código Python: primero detectas vulnerabilidades puntuales con Bandit, luego amplías el análisis con SonarQube para ver calidad, mantenibilidad y mejoras continuas.

La idea es comparar ambas herramientas sobre un mismo script para entender qué detecta cada una y cómo se complementan.

Clase 1: Bandit (seguridad específica en Python)

Bandit es un analizador estático orientado a riesgos típicos en Python: uso inseguro de eval, secretos embebidos, deserialización peligrosa y otros patrones.

comandos_bandit.sh
BASH
1 pip install bandit
2 bandit --version
3 bandit app.py
4 bandit -r proyecto/
app_insegura.py
PYTHON
1 # app.py (inseguro)
2 import pickle
3
4 password = "123456"
5
6 def ejecutar(texto):
7 return eval(texto)
8
9 def cargar(datos):
10 return pickle.loads(datos)
app_corregida.py
PYTHON
1 # app.py (corregido)
2 import json
3 import os
4
5 password = os.getenv("APP_PASSWORD", "")
6
7 def ejecutar_operacion(texto):
8 if not texto.isdigit():
9 raise ValueError("Entrada no válida")
10 return int(texto)
11
12 def cargar(datos):
13 return json.loads(datos)

Clase 2: SonarQube (calidad global del proyecto)

SonarQube permite revisar bugs, vulnerabilidades, complejidad, duplicación y code smells. Si Bandit te da alertas concretas de seguridad Python, SonarQube te da una visión más completa del estado del proyecto.

inventario_inicial.py
PYTHON
1 # versión inicial
2 def total_productos(productos):
3 total = 0
4 for p in productos:
5 total += p["cantidad"]
6 return total
inventario_mejorado.py
PYTHON
1 # versión mejorada
2 def total_productos(productos):
3 total = 0
4 for producto in productos:
5 cantidad = producto.get("cantidad", 0)
6 if not isinstance(cantidad, int) or cantidad < 0:
7 raise ValueError("Cantidad inválida")
8 total += cantidad
9 return total

🐍 Actividad integradora final

Usa el mismo script de inventario o ventas que construiste en módulos anteriores:

  1. Ejecuta Bandit y anota al menos dos hallazgos.
  2. Corrige el código y vuelve a ejecutar Bandit.
  3. Analiza el proyecto en SonarQube (o revisa un reporte preparado por el docente).
  4. Compara: ¿qué detecta Bandit y qué detecta SonarQube que Bandit no muestra?

Evidencia esperada: breve reporte con hallazgos, correcciones aplicadas y conclusión de mejora continua.

Diferencia clave entre ambas herramientas

Bandit: ideal para comenzar con seguridad en Python porque entrega resultados rápidos y accionables.

SonarQube: ideal para una segunda etapa, cuando quieres evaluar salud general del código y sostener una mejora continua de calidad.

Dato curioso: Primera versión pública en 1991; Guido van Rossum. Wikipedia

Ko-fi
Donaciones
Apoyá cafeycodigo con un café en Ko-fi. Colaboradores: insignia, muro y zona exclusiva.