Buenas Prácticas para la Seguridad en el Desarrollo Frontend

Saul Gomez
Pragma
Published in
3 min readMay 1, 2024

La seguridad en el desarrollo frontend es crucial para proteger tanto a los usuarios como a la aplicación de posibles vulnerabilidades y ataques, como los ataques de Cross-Site Scripting (XSS). Nosotros como desarrolladores frontend debemos de reducir al máximo estas posibles vulnerabilidades.

Primero entendamos: ¿Qué es Cross-Site Scripting (XSS)?

Es un tipo de ataque informático que puede permitir a una tercera persona inyectar scripts maliciosos en páginas web visitadas por un usuario. Estos scripts pueden ser en código JavaScript o en otro lenguaje similar.​ Se puede evitar usando medidas como CSP, política del mismo origen, etcétera.

A continuación te voy a presentar algunas buenas prácticas y medidas de seguridad que se deben tener en cuenta durante el desarrollo frontend:

1. Validación y Escape de Datos

Validar y escapar los datos antes de renderizarlos en el navegador es esencial para prevenir ataques XSS.

Buenas Prácticas:

  • Utilizar funciones de escape de HTML proporcionadas por los frameworks o bibliotecas (por ejemplo, {{ data | escapeHTML }} en Angular).
  • Utilizar sanitizadores de HTML para eliminar cualquier código malicioso.
  • Validar y filtrar los datos del lado del servidor antes de enviarlos al cliente.

Ejemplo en Angular:

Uso de la directiva [innerHTML] para evitar XSS

<div [innerHTML]=”data | escapeHTML”></div>

Link de documentación oficial de angular donde puedes aprender sobre cómo implementar la sanitización de las rutas https://angular.io/guide/security

2. Configuración de Encabezados de Seguridad

Configurar correctamente los encabezados de seguridad en la aplicación frontend puede ayudar a mitigar varios tipos de ataques, incluidos los XSS y los ataques de inyección de contenido.

Buenas Prácticas:

  • Configurar encabezados HTTP como Content-Security-Policy (CSP), X-Content-Type-Options y X-Frame-Options para restringir el comportamiento de la aplicación.
  • Establecer encabezados de respuesta adecuados para prevenir ataques de Clickjacking y MIME Sniffing.

Ejemplo:

// Configuración de CSP en el servidor

Content-Security-Policy: default-src ‘self’;

3. Uso Seguro de Bibliotecas y Dependencias

Utilizar bibliotecas y dependencias seguras y mantenerlas actualizadas es fundamental para reducir la superficie de ataque.

Buenas Prácticas:

  • Utilizar herramientas de análisis de dependencias para identificar vulnerabilidades en las bibliotecas de terceros.
  • Mantener actualizadas todas las bibliotecas y dependencias utilizadas en el proyecto.
  • Evitar incluir bibliotecas de origen desconocido o sin mantenimiento activo.

Ejemplo:

Ejecutando el comando npm audit podrás obtener un resumen de cuales son las vulnerabilidades que tiene tu proyecto según las dependencias instaladas y que puedes ver en tu package.json. Además con el comando npm audit fix podras solucionar estas vulnerabilidades automáticamente.

Link para visualizar la documentacion del comando npm audit: https://docs.npmjs.com/cli/v10/commands/npm-audit

https://www.todojs.com/npm-audit-avisa-de-vulnerabilidades/

// Archivo package.json con dependencias actualizadas

{

“dependencies”: {

“react”: “¹⁷.0.2”,

“express”: “⁴.17.1” }

}

4. Protección contra Ataques CSRF

Descripción: Implementar protección contra ataques de falsificación de solicitudes entre sitios (CSRF) es importante para prevenir acciones no autorizadas realizadas en nombre de un usuario autenticado.

Buenas Prácticas:

  • Utilizar tokens anti-CSRF y enviarlos con cada solicitud que modifique datos en el servidor.
  • Validar el origen de la solicitud y verificar que provenga de un dominio confiable.
  • Implementar medidas de seguridad en el backend para detectar y prevenir ataques CSRF.

Ejemplo:

// Generación de token anti-CSRF en el backend

const token = generateCSRFToken();

res.cookie(‘csrfToken’, token, { httpOnly: true });

5. Educación y Concienciación sobre Seguridad

Descripción: Fomentar la educación y la concienciación sobre seguridad entre los desarrolladores y el equipo de desarrollo es crucial para identificar y mitigar vulnerabilidades desde el principio.

Buenas Prácticas:

  • Proporcionar formación regular sobre las últimas amenazas de seguridad y las mejores prácticas de desarrollo seguro.
  • Realizar revisiones de código periódicas para identificar y corregir posibles problemas de seguridad.
  • Promover una cultura de seguridad dentro del equipo, fomentando la responsabilidad compartida en la protección de la aplicación.

Conclusión

Aca te dejo el link de la documentación oficial de Google sobre como evitar estos ataques y vulnerabilidades https://web.dev/articles/trusted-types

La seguridad en el desarrollo frontend es una responsabilidad compartida que requiere un enfoque proactivo y continuo para identificar, mitigar y prevenir vulnerabilidades. Al seguir estas buenas prácticas y mantenerse actualizado sobre las últimas amenazas de seguridad, los desarrolladores pueden contribuir a crear aplicaciones más seguras y protegidas contra ataques malintencionados.

--

--

Saul Gomez
Pragma
Writer for

Transformé circuitos en código. Ingeniero telecom convertido en programador Frontend con Angular e Ionic. Descubre el futuro en cada línea que escribo.