Oh MyUtils

Analizador de Cabeceras HTTP - Analizar y Auditar Seguridad en Línea

Analice y audite cabeceras HTTP para vulnerabilidades de seguridad, comportamiento de caché y configuración CORS. Obtenga una puntuación de seguridad con recomendaciones — 100% en el navegador, sin envío de datos.

100% en el Navegador — No se envían datos a ningún servidor
Tipo de Cabecera
Cabeceras Sin Procesar

Preguntas Frecuentes

¿Qué es un Analizador de Cabeceras HTTP y qué hace?

Un Analizador de Cabeceras HTTP es una herramienta que analiza cabeceras HTTP sin procesar (tanto de solicitud como de respuesta) y proporciona explicaciones legibles para cada cabecera. Categoriza las cabeceras por función (Seguridad, Caché, CORS, Contenido, etc.), realiza una auditoría de seguridad para verificar la presencia y corrección de cabeceras de seguridad críticas como Content-Security-Policy, Strict-Transport-Security y X-Frame-Options, y genera una puntuación de seguridad.

¿Cómo uso esta herramienta de análisis de cabeceras HTTP?

1. Copie las cabeceras HTTP de las Herramientas de Desarrollo de su navegador (pestaña Red, haga clic en una solicitud, vea las Cabeceras), de la salida de curl -v o de los registros del servidor. 2. Pegue las cabeceras sin procesar en el área de texto. 3. Seleccione Cabeceras de Solicitud o Cabeceras de Respuesta. 4. Vea los resultados en la pestaña Cabeceras Analizadas. 5. Cambie a Auditoría de Seguridad para ver su puntuación y cabeceras faltantes.

¿Están seguros mis datos? ¿Se envían a un servidor?

Completamente seguros. Este analizador funciona 100% en su navegador usando JavaScript del lado del cliente. Ningún dato se transmite a ningún servidor. Todo el análisis ocurre localmente en su navegador. A diferencia de herramientas como securityheaders.com que requieren ingresar una URL, esta herramienta funciona completamente sin conexión después de cargar la página.

¿Qué cabeceras de seguridad debería tener todo sitio web?

Todo sitio web debería implementar estas cabeceras críticas: (1) Strict-Transport-Security (HSTS) para forzar HTTPS. (2) Content-Security-Policy (CSP) para prevenir XSS. (3) X-Content-Type-Options: nosniff. (4) X-Frame-Options: DENY para prevenir clickjacking. (5) Referrer-Policy para limitar la fuga de información. (6) Permissions-Policy para deshabilitar funciones del navegador no utilizadas.

¿Qué es Content-Security-Policy (CSP) y por qué es importante?

Content-Security-Policy es una cabecera de respuesta HTTP que indica al navegador qué fuentes de contenido pueden cargarse en una página. Es una de las defensas más poderosas contra ataques de Cross-Site Scripting (XSS). CSP usa directivas como default-src, script-src, style-src para limitar orígenes permitidos. Los valores como 'unsafe-inline' y 'unsafe-eval' debilitan significativamente la CSP.

¿Cómo se calcula la puntuación de seguridad?

La puntuación es una calificación numérica de 0-100 basada en la presencia y calidad de configuración de cabeceras de seguridad críticas. Los puntos se asignan así: HSTS (15 puntos), CSP (20 puntos), X-Frame-Options (10 puntos), X-Content-Type-Options (10 puntos), Referrer-Policy (10 puntos), Permissions-Policy (10 puntos), COOP (5 puntos), CORP (5 puntos), COEP (5 puntos), y ausencia de cabeceras que exponen versiones (10 puntos). Las calificaciones van de A+ (95-100) a F (0-39).

¿Cuál es la diferencia entre cabeceras de solicitud y de respuesta?

Las cabeceras de solicitud son enviadas por el cliente (navegador) al servidor e incluyen información como User-Agent, Accept, Authorization y Cookie. Las cabeceras de respuesta son enviadas por el servidor al cliente e incluyen Content-Type, Cache-Control, cabeceras de seguridad (CSP, HSTS), Set-Cookie y cabeceras CORS. La auditoría de seguridad se aplica principalmente a las cabeceras de respuesta.

Ejemplos de Código

// HTTP Header Parser and Security Analyzer

function parseHttpHeaders(rawHeaders) {
  const headers = [];
  for (const line of rawHeaders.split('\n')) {
    let cleaned = line.trim();
    if (!cleaned) continue;
    if (/^HTTP\/[\d.]+\s+\d+/.test(cleaned)) continue;
    if (/^(GET|POST|PUT|DELETE|PATCH|HEAD|OPTIONS)\s+/.test(cleaned)) continue;
    cleaned = cleaned.replace(/^[<>]\s*/, '');
    if (!cleaned) continue;
    const i = cleaned.indexOf(':');
    if (i === -1) continue;
    const name = cleaned.substring(0, i).trim();
    const value = cleaned.substring(i + 1).trim();
    if (name) headers.push({ name, value });
  }
  return headers;
}

const SECURITY_CHECKS = [
  { header: 'strict-transport-security', label: 'HSTS', weight: 15 },
  { header: 'content-security-policy', label: 'CSP', weight: 20 },
  { header: 'x-frame-options', label: 'X-Frame-Options', weight: 10 },
  { header: 'x-content-type-options', label: 'X-Content-Type-Options', weight: 10 },
  { header: 'referrer-policy', label: 'Referrer-Policy', weight: 10 },
  { header: 'permissions-policy', label: 'Permissions-Policy', weight: 10 },
];

function auditSecurity(headers) {
  const map = new Map(headers.map(h => [h.name.toLowerCase(), h.value]));
  let score = 0;
  const results = [];
  for (const check of SECURITY_CHECKS) {
    const value = map.get(check.header);
    if (value) {
      score += check.weight;
      results.push({ header: check.label, status: 'pass', value });
    } else {
      results.push({ header: check.label, status: 'fail', value: null });
    }
  }
  // Check info leakage
  if (!['server', 'x-powered-by'].some(h => map.has(h))) score += 10;
  const grade = score >= 95 ? 'A+' : score >= 85 ? 'A' :
    score >= 75 ? 'B' : score >= 60 ? 'C' : score >= 40 ? 'D' : 'F';
  return { score, grade, results };
}

// Example usage
const raw = `Content-Type: text/html\nStrict-Transport-Security: max-age=31536000\nX-Frame-Options: DENY\nX-Content-Type-Options: nosniff`;
const parsed = parseHttpHeaders(raw);
const audit = auditSecurity(parsed);
console.log(`Score: ${audit.score}/100 (${audit.grade})`);

Herramientas relacionadas