Seguridad2026-02-20

Conceptos básicos de seguridad que todo proyecto de software necesita

Autenticación, autorización, top ten de OWASP, gestión de secretos y registros de auditoría: lo innegociable, explicado con claridad.

Seguridad

La respuesta corta

La seguridad del software personalizado no es un complemento que compras al final — es un conjunto de decisiones base integradas en la arquitectura desde el primer día: autenticación, autorización, validación de entradas, gestión de secretos y registro de auditoría. Hazlo bien y bloqueas el 90% de los ataques comunes. Sáltatelo y ningún parcheo posterior cierra del todo la brecha.

La línea base OWASP que toda app personalizada necesita

El OWASP Top 10 lista los riesgos de seguridad más comunes en aplicaciones web. Para una aplicación B2B personalizada, los cinco que más importan son: control de acceso roto, fallos criptográficos, ataques de inyección, diseño inseguro y configuración incorrecta. Estos no son teóricos — son las vulnerabilidades que aparecen en informes reales de brechas año tras año.

Autenticación: ¿quién eres?

Las contraseñas deben hashearse, nunca almacenarse en texto plano. Usa bcrypt o Argon2 con una sal por usuario. Exige una política de contraseñas mínima (12+ caracteres, no teatro de complejidad). Añade autenticación de dos factores para cuentas de administrador — este solo paso bloquea la mayoría de los ataques de relleno de credenciales. Los tokens de sesión deben expirar, almacenarse HttpOnly y Secure, e invalidarse al cerrar sesión.

Autorización: ¿qué se te permite hacer?

El control de acceso roto es el riesgo número uno de OWASP. Cada endpoint de API debe verificar: ¿este usuario ha iniciado sesión? ¿Tiene este usuario permiso para acceder a este recurso específico? No confíes en ocultar botones de la UI — la API debe aplicar permisos de forma independiente. Un usuario nunca debería poder acceder a los datos de otro cambiando un ID en la URL.

Protección contra inyección: trata toda entrada como hostil

La inyección SQL, XSS y la inyección de comandos comparten una causa raíz: datos no confiables interpretados como código. Usa consultas parametrizadas para cada llamada a la base de datos. Escapa todo el contenido generado por el usuario antes de renderizarlo en el navegador. Nunca concatenes entrada de usuario en comandos shell. Estas no son mejores prácticas opcionales — son el mínimo.

Gestión de secretos: dónde viven tus claves

Las claves API, contraseñas de base de datos, claves de cifrado y tokens de terceros nunca deben estar codificadas en el código fuente. Deben vivir en variables de entorno o en un gestor de secretos dedicado (AWS Secrets Manager, HashiCorp Vault). Deben rotarse regularmente. Nunca deben aparecer en el historial de git — si una clave se ha subido a un repositorio, trátala como comprometida y rota inmediatamente.

La pista de auditoría que no puedes saltar

Registra cada acción significativa: quién inició sesión, qué cambió, cuándo, y desde qué IP. Estos registros no son solo para cumplimiento — son cómo detectas un incidente después. Un evento de seguridad que nunca se registra es un evento que nunca se detecta. Almacena los registros de forma centralizada, protégelos de manipulaciones y consérvalos al menos 90 días.

Errores de seguridad comunes en proyectos personalizados

  • Añadiremos seguridad después del lanzamiento — reforzar seguridad a posteriori cuesta 3–5 veces más que construirla desde el principio, y siempre deja brechas.
  • Confiar en la oscuridad — nadie sabe que nuestra app existe no es una estrategia de seguridad. Los escáneres automáticos encuentran paneles de administración expuestos en horas.
  • Saltar la validación de entrada en el servidor — la validación del cliente es para UX. El servidor debe revalidar cada entrada, siempre.
  • Usar dependencias desactualizadas — la mayoría de las brechas reales vienen de vulnerabilidades conocidas en bibliotecas de terceros, no del código personalizado. Ejecuta escaneos de dependencias mensualmente.
  • Sin plan de respuesta a incidentes — tendrás un incidente. La pregunta es si sabrás qué hacer cuando ocurra.

Presupuesto de seguridad: lo que realmente cuesta

Para una aplicación B2B personalizada, integrar seguridad desde el primer día añade aproximadamente un 15–25% al coste de desarrollo. Esto cubre sistemas de autenticación, middleware de autorización, validación de entradas, gestión de secretos, registro de auditoría y pruebas básicas de penetración. Suena caro hasta que lo comparas con la alternativa: una sola brecha puede costar a una empresa mediana entre 200.000 y 500.000 dólares en respuesta, tiempo de inactividad y gastos legales — antes de cualquier multa regulatoria.

Tu lista de seguridad para el lanzamiento

  1. Todas las contraseñas hasheadas con bcrypt o Argon2.
  2. MFA activado para todas las cuentas de administrador.
  3. HTTPS aplicado en todas partes, cabeceras HSTS configuradas.
  4. Cabeceras de seguridad configuradas (CSP, X-Frame-Options, X-Content-Type-Options).
  5. Todos los endpoints de API aplican controles de autorización.
  6. Las consultas a la base de datos usan sentencias parametrizadas.
  7. Secretos almacenados en variables de entorno, no en el código.
  8. Escaneo de dependencias ejecutado sin vulnerabilidades de alta gravedad.
  9. Registro de auditoría activo para todas las acciones sensibles.
  10. Copia de seguridad y recuperación probadas.

Preguntas frecuentes sobre seguridad

Respuestas rápidas a las preguntas que más nos hacen sobre seguridad de software personalizado.

El software personalizado es más o menos seguro que el estándar?

Depende totalmente de cómo se construya. El software estándar se beneficia del uso masivo y el escrutinio público — las vulnerabilidades se encuentran y arreglan rápido. El software personalizado es menos atacado simplemente porque es oscuro, pero cuando existe una vulnerabilidad, no hay un proveedor empujando un parche. La ventaja del software personalizado: controlas la arquitectura e implementas exactamente los controles de seguridad que tu negocio necesita. El riesgo: si tu desarrollador se saltó lo básico, nadie viene a salvarte.

¿Necesitamos pruebas de penetración?

Antes de manejar datos sensibles de clientes o procesar pagos, sí. Una prueba de penetración básica para una app web personalizada cuesta entre 3.000 y 10.000 dólares y típicamente encuentra 5–10 vulnerabilidades reales que los escáneres automáticos pasan por alto. Para sectores regulados (sanidad, finanzas), esto no es opcional — es un requisito de cumplimiento.

¿Cada cuánto debemos actualizar la seguridad?

Tres capas: (1) escaneos automáticos de dependencias mensualmente; (2) una revisión de seguridad tras cada lanzamiento de función importante; (3) una prueba de penetración completa anualmente o tras cambios arquitectónicos significativos. La seguridad no es una casilla — es una práctica continua.

¿Quieres saber más?

Contáctanos para obtener una cotización gratuita.

¿Necesitas ayuda con tu proyecto?

Solicita una cotización gratuita y recibe un presupuesto cerrado en 48 horas.

Solicita tu cotización gratuita