HTTPONLY EN NODE.JS: CÓMO PROTEGER LAS COOKIES
HttpOnly es un atributo que se puede configurar en una cookie HTTP para aumentar la seguridad de una aplicación web. Cuando una cookie tiene el atributo HttpOnly, significa que solo puede ser accedida por el servidor a través de solicitudes HTTP y no por scripts del lado del cliente, como JavaScript. Esto ayuda a proteger la cookie contra ataques como el Cross-Site Scripting (XSS), ya que un atacante no podrá acceder a la cookie mediante scripts maliciosos ejecutados en el navegador, mejorando la seguridad al limitar la exposición de cookies sensibles y mitiga el impacto de ataques XSS al evitar que scripts maliciosos lean o manipulen la cookie. HttpOnly se usa comúnmente para cookies de autenticación (como tokens de sesión) para reducir el riesgo de robo de cookies. HttpOnly no protege contra otros tipos de ataques, como Cross-Site Request Forgery (CSRF).Ejemplo completo del servidor con NodeJS y Express
// Archivo: server.js
const express = require('express');
const cookieParser = require('cookie-parser');
const app = express();
app.use(cookieParser());
app.get('/set-cookie', (req, res) => {
// Configura una cookie con HttpOnly
res.cookie('sessionToken', 'xyz789', {
httpOnly: true, // Impide acceso desde JavaScript
secure: true, // Solo por HTTPS (usa HTTP para pruebas locales)
sameSite: 'Strict', // Protección contra CSRF
maxAge: 24 * 60 * 60 * 1000 // Expira en 24 horas
});
res.send('Cookie "sessionToken" establecida con HttpOnly.');
});
app.get('/check-cookie', (req, res) => {
// Verifica si la cookie existe en la solicitud
const sessionToken = req.cookies.sessionToken;
res.send(`Valor de la cookie en el servidor: ${sessionToken || 'No encontrada'}`);
});
app.listen(3000, () => {
console.log('Servidor corriendo en http://localhost:3000');
});
- La ruta /set-cookie crea una cookie llamada sessionToken con HttpOnly.
- La ruta /check-cookie demuestra que el servidor puede leer la cookie en solicitudes HTTP.
const cookies = document.cookie;
console.log(cookies);