Seguridad web y buenas prácticas
Este dominio comprueba si reconoces las amenazas habituales y las defensas correctas: XSS, CSRF, inyección SQL, gestión de contraseñas y sesiones, HTTPS, control de acceso y configuración segura. Las preguntas suelen contrastar una práctica débil con su alternativa robusta.
Amenazas y defensas
- XSS ocurre cuando datos no confiables se insertan como HTML o script. Se previene escapando la salida según el contexto y evitando
innerHTMLcon datos del usuario. Una CSP restrictiva reduce el impacto. - CSRF obliga al navegador autenticado a enviar una petición no deseada. Se mitiga con tokens anti-CSRF, cookies
SameSitey verificación de origen. - Inyección SQL se evita con consultas parametrizadas o prepared statements, no concatenando cadenas.
- Las contraseñas se almacenan con un hash lento y salado como bcrypt o Argon2, nunca en texto plano ni con MD5 o SHA-1.
- Autenticación verifica identidad; autorización decide permisos. Se aplica mínimo privilegio en cada ruta y recurso.
Sesiones y transporte
- HTTPS protege el tránsito con TLS. Sin HTTPS, cookies y credenciales pueden interceptarse.
- Cookies de sesión con
HttpOnly(sin acceso desde JavaScript),Secure(solo HTTPS) ySameSite=LaxoStrict. - Guardar tokens en
localStoragelos expone a XSS; una cookieHttpOnlyreduce ese riesgo. - Los mensajes de error de login deben ser genéricos para no revelar si el correo existe.
Ejemplo trabajado
Login: el servidor recibe correo y contraseña, busca al usuario, compara con bcrypt.compare, y si coincide crea una sesión y envía una cookie HttpOnly; Secure; SameSite=Lax. Si falla, responde con el mismo mensaje genérico y aplica límite de intentos. Razonamiento: el hash lento resiste fuerza bruta; la cookie HttpOnly no queda expuesta a script; Secure evita envío por HTTP; SameSite frena CSRF; el mensaje genérico evita enumeración de cuentas.
Errores que cuestan puntos
Validar solo en el cliente; usar MD5; concatenar SQL; confiar en ocultar un botón para denegar permisos; guardar secretos en el repositorio; desactivar CORS o CSP sin analizar; mostrar trazas con datos internos; no rotar credenciales filtradas.