Seguridad de las API y herramientas recomendadas

0 acciones
0
0
0
0

Introducción

La seguridad de las API implica proteger la integridad de las API que usamos o creamos. Hoy en día, la mayoría de las empresas utilizan API para conectar servicios y transferir datos. Si la API se ve comprometida, expuesta o hackeada, se producirá una filtración de datos. Por lo tanto, en función de la información transferida, debemos considerar el nivel de seguridad de la API que se requiere implementar en la aplicación. En este artículo, presentaré algunos paquetes npm útiles que nos ayudan a evitar problemas de seguridad comunes.

1. Uso de casco

Casco.js Es un módulo de Node.js que protege los encabezados HTTP. Este módulo se utiliza en aplicaciones Express y previene ataques como Cross-Site Scripting (XSS) y Clickjacking mediante la configuración de varios encabezados HTTP.

¿Por qué es importante proteger los encabezados HTTP?

La mayoría de los desarrolladores ignoran los encabezados HTTP. Estos encabezados pueden revelar información confidencial sobre el servidor, la versión del software e incluso la estructura de la aplicación. Por eso es tan importante usar herramientas como Helmet.js.

Módulos importantes de Helmet.js
  • Opciones de X-Frame: Evite el clickjacking impidiendo que las páginas se muestren en iFrames.
  • Política de seguridad del contenido: Establecer una política de seguridad para evitar la inyección de scripts no autorizados.
  • Control de caché: Deshabilite el almacenamiento en caché del lado del cliente para información confidencial.
  • Expect-CT: Garantizar la transparencia del certificado SSL.
  • X-Powered-By: Eliminar los encabezados que muestran información del software del servidor.
  • Protección X-XSS: Habilite la protección contra ataques XSS en los navegadores.
  • Seguridad estricta en el transporte: Forzar al navegador a utilizar HTTPS.
Para comenzar a utilizar Helmet.js, simplemente instale este módulo y úselo en su aplicación Express.
const helmet = require('helmet');
const express = require('express');
const app = express();
app.use(helmet());

2. Uso seguro de cookies

Para garantizar que las cookies no provoquen vulnerabilidades en las aplicaciones, deje de utilizar el nombre predeterminado para las cookies de sesión y configure las opciones de seguridad de las cookies de forma adecuada.

Problemas comunes con las cookies

Si las cookies no se configuran correctamente, pueden convertirse en blancos fáciles de ataques de scripts entre sitios o de divulgación de información. Una configuración precisa de las cookies mitigará estos riesgos.

Configuraciones recomendadas
  • seguro: Asegúrese de que las cookies se envíen únicamente a través de HTTPS.
  • Sólo http: Restringir el acceso de las cookies al JavaScript del lado del cliente.
  • dominio: Especifique un dominio válido para las cookies.
  • camino: Limitar las rutas donde las cookies son válidas.
  • expira: Establecer una fecha de caducidad para las cookies persistentes.
const session = require('cookie-session');
const express = require('express');
const app = express();
const expiryDate = new Date(Date.now() + 60 * 60 * 1000); // 1 ساعت
app.use(session({
name: 'session',
keys: ['key1', 'key2'],
cookie: {
secure: true,
httpOnly: true,
domain: 'example.com',
path: 'foo/bar',
expires: expiryDate
}
}));

3. Prevenir inyecciones NoSQL

La inyección NoSQL es un ataque común en aplicaciones que utilizan bases de datos NoSQL. Este ataque puede permitir a un atacante extraer información confidencial.

Solución

Usando el paquete express-mongo-desinfectar Puede desinfectar los datos entrantes y prevenir este tipo de ataques.

$ npm install express-mongo-sanitize
const mongoSanitize = require('express-mongo-sanitize');
app.use(mongoSanitize());

4. Prevenir ataques ReDoS

Los ataques ReDoS o de denegación de servicio en expresiones regulares pueden reducir el rendimiento del servidor. Desde la herramienta expresión regular segura Utilice expresiones regulares para comprobar si son seguras.

Ejemplo

var safe = require('safe-regex');
var regex = process.argv.slice(2).join(' ');
console.log(safe(regex));

5. Prevenir ataques CSRF

Para proteger su aplicación contra ataques CSRF que permiten a los atacantes enviar solicitudes maliciosas a través de navegadores legítimos, utilice el módulo csurf Usar.

const csrf = require('csurf');
app.use(csrf());
Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

También te puede gustar