Skip to main content
Volver al blog

Guía SEO Paso 7: Seguridad — La Base que Google Espera en 2026

·13 min de lectura·por LANGR SEO

Guía SEO Paso 7: Seguridad

Este es el Paso 7 de la Guía SEO de 13 Pasos. La seguridad no solo se trata de proteger a los usuarios: impacta directamente en tus clasificaciones de búsqueda. Google ha utilizado HTTPS como una señal de clasificación desde 2014, y las expectativas solo han aumentado.


La mayoría de los propietarios de sitios piensan en la seguridad como algo binario: "Tenemos SSL, así que estamos seguros". En realidad, Google evalúa docenas de señales de seguridad. Los sitios con encabezados de seguridad adecuados, certificados válidos y sin contenido mixto superan a los sitios que solo tienen un certificado SSL básico, siempre que todo lo demás sea igual.

La buena noticia: la mayoría de las correcciones de seguridad son configuraciones únicas. Configúralas una vez y protegerán tus clasificaciones permanentemente.

Configuración de SSL

SSL (técnicamente TLS) cifra la conexión entre tu servidor y los visitantes. Desde 2014, Google ha confirmado explícitamente HTTPS como una señal de clasificación. En 2026, no tener HTTPS no solo es un problema de clasificación: Chrome marca los sitios HTTP como "No seguros" en la barra de direcciones, destruyendo la confianza del usuario.

Requisitos para un SSL adecuado:

| Requisito | Por qué | Cómo comprobar | |-----------|---------|----------------| | Certificado válido | Vencido = advertencia del navegador = usuarios rebotados | Comprobar fecha de expiración | | Cadena completa | Cadenas incompletas fallan en algunos dispositivos | Prueba de SSL Labs | | TLS 1.2+ | Las versiones anteriores tienen vulnerabilidades conocidas | Prueba de SSL Labs | | Sin SHA-1 | Obsoleto, los navegadores lo rechazan | Detalles del certificado | | Cobertura SAN | www y no-www deben estar cubiertos | Detalles del certificado | | Renovación automática | Previene desastres por expiración | Configuración de Let's Encrypt / proveedor |

Puntuación de SSL:

100% = Certificado válido + Cadena completa + TLS 1.3 + Cifrado fuerte + Renovación automática
  0% = Certificado vencido o faltante

Errores comunes de SSL:

  1. El certificado expira sin aviso — Configura monitoreo (Paso 6) al menos 30 días antes de la expiración
  2. Cadena de certificados incompleta — El servidor debe enviar certificados intermedios, no solo el leaf
  3. Contenido mixto — Página HTTPS carga recursos HTTP (imágenes, scripts, hojas de estilo)
  4. Bucles de redirección — Ciclos HTTP → HTTPS → HTTP causados por CDN/proxy mal configurados
  5. Desajuste entre no-www y www — El certificado cubre uno pero no el otro

Victoria rápida: Ejecuta tu dominio a través de SSL Labs (ssllabs.com/ssltest). Cualquier cosa por debajo de una calificación "A" tiene problemas que se pueden resolver. La mayoría de los proveedores de hosting corrigen esto con un clic.

Encabezados de Seguridad

Los encabezados de seguridad son encabezados de respuesta HTTP que instruyen a los navegadores sobre cómo comportarse al cargar tu sitio. Previenen categorías enteras de ataques — y los rastreadores de Google los verifican.

Los encabezados de seguridad esenciales:

Content-Security-Policy (CSP)

CSP es el encabezado de seguridad más poderoso. Indica a los navegadores exactamente qué recursos (scripts, estilos, imágenes, fuentes) están permitidos para cargar en tus páginas.

Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.example.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self' https://fonts.gstatic.com; connect-src 'self' https://api.example.com; frame-ancestors 'none';

Lo que CSP previene:

  • Ataques de scripting entre sitios (XSS)
  • Ataques de inyección de datos
  • Clickjacking (a través de frame-ancestors)
  • Ejecución no autorizada de scripts (mineros de criptomonedas, inyectores de anuncios)

Estrategia de implementación de CSP:

  1. Comienza con Content-Security-Policy-Report-Only (registra violaciones sin bloquear)
  2. Monitorea informes durante 1-2 semanas
  3. Lista en blanco fuentes legítimas
  4. Cambia a modo de aplicación
  5. Agrega report-uri o report-to para el registro continuo de violaciones

X-Frame-Options

Evita que tu sitio sea incrustado en iframes en otros dominios (protección contra clickjacking).

X-Frame-Options: DENY

O si necesitas permitir el enmarcado de la misma origen:

X-Frame-Options: SAMEORIGIN

X-Content-Type-Options

Evita que los navegadores realicen sniffing del tipo MIME (interpretando archivos como diferentes tipos de los declarados).

X-Content-Type-Options: nosniff

Esta línea previene ataques donde un archivo .jpg contiene JavaScript oculto que el navegador podría ejecutar.

Referrer-Policy

Controla cuánta información del referente se envía cuando los usuarios hacen clic en enlaces de tu sitio.

Referrer-Policy: strict-origin-when-cross-origin

Esto envía la URL completa para solicitudes del mismo origen, pero solo el origen (dominio) para solicitudes de diferentes orígenes. Equilibra las necesidades de análisis con la privacidad.

Permissions-Policy

Controla qué características del navegador (cámara, micrófono, geolocalización, etc.) pueden ser utilizadas en tu sitio.

Permissions-Policy: camera=(), microphone=(), geolocation=(), payment=()

Deshabilitar funciones que no usas previene que scripts de terceros las abusen.

Ejemplo de implementación de encabezados (Next.js):

// next.config.js
module.exports = {
  async headers() {
    return [{
      source: '/(.*)',
      headers: [
        { key: 'X-Content-Type-Options', value: 'nosniff' },
        { key: 'X-Frame-Options', value: 'SAMEORIGIN' },
        { key: 'Referrer-Policy', value: 'strict-origin-when-cross-origin' },
        { key: 'Permissions-Policy', value: 'camera=(), microphone=(), geolocation=()' },
        { key: 'Strict-Transport-Security', value: 'max-age=31536000; includeSubDomains; preload' },
      ]
    }]
  }
}

Implementación de encabezados (Apache .htaccess):

Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"

Implementación de encabezados (Nginx):

add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

Victoria rápida: Agrega los 5 encabezados mencionados a tu configuración de servidor. Esto toma 5 minutos y mejora inmediatamente tu postura de seguridad en cualquier herramienta de escaneo.

HSTS Preload

HTTP Strict Transport Security (HSTS) indica a los navegadores que siempre usen HTTPS para tu dominio — incluso antes de la primera solicitud. Sin HSTS, la primera visita a tu sitio puede usar HTTP (vulnerable a interceptaciones) antes de que se realice la redirección a HTTPS.

Encabezado HSTS:

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

Las tres directivas:

| Directiva | Significado | |-----------|-------------| | max-age=31536000 | Recuerda esto por 1 año (en segundos) | | includeSubDomains | Aplica a todos los subdominios también | | preload | Solicita inclusión en listas de precarga de navegadores |

Lista de precarga HSTS:

La máxima protección HSTS. Los navegadores vienen con una lista integrada de dominios que deben usar HTTPS. Enviar tu dominio a hstspreload.org significa:

  • Los visitantes de primera vez obtienen HTTPS inmediatamente (sin redirección HTTP → HTTPS)
  • Imposible para los atacantes degradar las conexiones
  • Permanente (difícil de eliminar una vez enviado)

Requisitos para HSTS preload:

  1. Certificado HTTPS válido
  2. Redirigir todo HTTP a HTTPS (incluidos subdominios)
  3. Encabezado HSTS con max-age >= 31536000
  4. El encabezado HSTS incluye includeSubDomains
  5. El encabezado HSTS incluye preload
  6. Todos los subdominios deben soportar HTTPS

Advertencia: Solo envía a preload si TODOS tus subdominios soportan HTTPS. La directiva includeSubDomains significa que cualquier subdominio solo HTTP se volverá inaccesible.

Victoria rápida: Si ya tienes HTTPS en todos los subdominios, agrega el encabezado HSTS completo y envíalo a hstspreload.org. El procesamiento toma unas semanas, pero la protección es permanente.

Escaneo de Vulnerabilidades

El escaneo automatizado de vulnerabilidades identifica problemas de seguridad conocidos en tu pila antes de que los atacantes los exploten.

Lo que verifica el escaneo de vulnerabilidades:

  • Software desactualizado: WordPress, plugins, bibliotecas de JavaScript con CVEs conocidos
  • Archivos expuestos: .env, .git, wp-config.php, volcados de base de datos
  • Fugas de información: Encabezados de versión del servidor, modo de depuración, trazas de pila
  • Credenciales predeterminadas: Páginas de administrador sin autenticación, contraseñas predeterminadas
  • Puertos/servicios abiertos: Servicios innecesarios expuestos a internet
  • Puntos de inyección: Formularios sin protección CSRF, entradas no validadas

Vulnerabilidades comunes por plataforma:

| Plataforma | Principal Vulnerabilidad | Solución | |------------|-------------------------|----------| | WordPress | Plugins desactualizados | Actualización automática + WAF | | Shopify | Permisos de aplicaciones de terceros | Auditoría trimestral de la lista de aplicaciones | | Next.js | Rutas API expuestas | Middleware de autenticación + limitación de tasa | | Sitios estáticos | Configuración incorrecta de CDN | Revisar reglas de caché | | Personalizado | Inyección SQL | Consultas parametrizadas |

Frecuencia de escaneo:

  • Diariamente: Escaneo superficial automatizado (SSL, encabezados, archivos expuestos)
  • Semanalmente: Verificación de vulnerabilidades de dependencias (npm audit, escáner de plugins de WordPress)
  • Mensualmente: Escaneo profundo con pruebas autenticadas
  • Después de cada despliegue: Verificación de regresión

Victoria rápida: Ejecuta npm audit (Node.js) o revisa la lista de plugins de tu CMS para componentes desactualizados. Corrige inmediatamente los problemas de alta/crítica severidad.

Contenido Mixto

El contenido mixto ocurre cuando una página HTTPS carga recursos (imágenes, scripts, hojas de estilo, iframes) a través de HTTP. Esto rompe parcialmente el cifrado y activa advertencias en el navegador.

Tipos de contenido mixto:

| Tipo | Severidad | Ejemplo | Comportamiento del Navegador | |---------|-----------|-----------------------|-------------------------------| | Activo | Alto | Script HTTP, iframe, CSS | Bloqueado por defecto | | Pasivo | Medio | Imagen HTTP, video, audio | Cargado con advertencia |

El contenido mixto activo es bloqueado por navegadores modernos, lo que significa que tus scripts y estilos simplemente no se cargarán. El contenido mixto pasivo se carga pero muestra advertencias de seguridad.

Encontrar contenido mixto:

  1. Abre las Herramientas de Desarrollo de Chrome → Consola
  2. Busca advertencias de "Contenido Mixto"
  3. Alternativamente, escanea con un rastreador (Screaming Frog, LANGR)

Fuentes comunes de contenido mixto:

  • URLs http:// codificadas en el contenido (publicaciones del blog, descripciones de productos)
  • Widgets de terceros que cargan recursos HTTP
  • Contenido incrustado (embeds antiguos de YouTube, widgets de redes sociales)
  • CSS background-image con URLs HTTP
  • Fuentes cargadas a través de HTTP

Corriendo contenido mixto:

<!-- Malo -->
<img src="http://example.com/image.jpg" />

<!-- Bueno -->
<img src="https://example.com/image.jpg" />

<!-- Mejor (relativo al protocolo, se adapta al protocolo de la página) -->
<img src="//example.com/image.jpg" />

Corrección de base de datos (WordPress):

UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://tudominio.com', 'https://tudominio.com');
UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, 'http://tudominio.com', 'https://tudominio.com');

Victoria rápida: Abre tu página de inicio en Chrome, presiona F12, verifica la pestaña de Consola en busca de advertencias de contenido mixto. Corrige cualquier que aparezca: estas son directamente visibles para Google.

Riesgos de Scripts de Terceros

Cada script externo que cargas es un potencial pasivo de seguridad (y rendimiento). Los scripts de terceros pueden:

  • Ser comprometidos (ataques de cadena de suministro)
  • Rastrear a tus usuarios sin consentimiento (violación del GDPR)
  • Lentificar tu sitio (bloqueo de renderizado, latencia de red)
  • Romper funcionalidad (actualizaciones de versión, caídas)
  • Inyectar contenido no deseado (scripts publicitarios fallidos)

Audita tus scripts de terceros:

| Script | ¿Necesario? | Nivel de Riesgo | Alternativa | |----------------------|-------------|-----------------|-------------------------| | Google Analytics | A menudo sí | Bajo | Seguimiento del lado del servidor | | Widgets de chat | Quizás | Medio | Soluciones autoalbergadas | | Botones de compartir en redes sociales | Rara vez | Medio | Enlaces de compartir estáticos | | Pruebas A/B | A veces | Alto | Pruebas del lado del servidor | | Píxeles de reorientación | Decisión comercial | Alto | Datos de primera parte | | CDN de fuentes | Conveniente | Bajo | Fuentes autoalbergadas |

Mitigación de riesgos para scripts de terceros esenciales:

  1. Integridad de Subrecursos (SRI): La verificación de hash evita que scripts manipulados se carguen
<script src="https://cdn.example.com/lib.js"
        integrity="sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxAE+sO0..."
        crossorigin="anonymous"></script>
  1. Restricciones CSP: Permitir solo scripts de dominios conocidos
  2. Iframes aislados: Aislar widgets de terceros
  3. Auditorías regulares: Revisión trimestral de todos los recursos externos
  4. Monitoreo: Alerta sobre nuevos dominios externos que aparecen en tus páginas

Victoria rápida: Enumera cada etiqueta