Pruebas de seguridad

Cabeceras de seguridad

Configura HSTS, CSP, X-Frame-Options, Referrer-Policy y Permissions-Policy con Security Ninja Pro o configuración del servidor.

Algunas capturas todavía muestran la interfaz en inglés. Los pasos usan las etiquetas en español del plugin.

Las cabeceras de seguridad forman parte de la respuesta HTTP que envía tu servidor. Indican al navegador cómo tratar HTTPS, el framing, los tipos de contenido y reglas de endurecimiento similares.

En Pro, puedes activar muchas desde Security Ninja → Correcciones. También puedes configurarlas en .htaccess, Nginx o PHP. Las cabeceras mal configuradas (especialmente CSP) pueden romper el sitio, así que prueba tras cada cambio.

Casillas de cabeceras de seguridad en la página Correcciones

Strict Transport Security (HSTS)

HSTS indica a los navegadores que usen solo HTTPS. Confirma que tu certificado SSL funciona en todo el sitio antes de activarlo.

Ejemplo PHP (prefiere un tema hijo o plugin pequeño):

header( 'Strict-Transport-Security: max-age=31536000;' );

Apache (.htaccess):

#BEGIN WP Security Ninja - Forces only HTTPS
	<IfModule mod_headers.c>
	Header set Strict-Transport-Security "max-age=31536000;"
	</IfModule>
#END WP Security Ninja - Forces only HTTPS

Añade includeSubDomains si quieres que la política cubra subdominios.

Nginx (bloque server):

add_header Strict-Transport-Security "max-age=31536000;";

Más información: https://hstspreload.org

Content Security Policy (CSP)

CSP limita qué fuentes puede cargar el navegador (scripts, estilos, frames y más). Reduce el impacto de XSS, pero una política estricta puede romper Analytics, incrustaciones y plugins.

Empieza con Content-Security-Policy-Report-Only mientras ajustas la política. Guía completa: Política de seguridad de contenido (CSP).

Ejemplo de política solo de informe que permite scripts del mismo origen:

#BEGIN WP Security Ninja - Only allow browsers to load.js files from this website
	# Use Content-Security-Policy-Report-Only to test settings before using Content-Security-Policy.
	<IfModule mod_headers.c>
	Header set Content-Security-Policy-Report-Only: "script-src 'self'"
	</IfModule>
#END WP Security Ninja - Only allow browsers to load.js files from this website

Nginx:

add_header Content-Security-Policy-Report-Only "script-src 'self'";

Security Ninja ya no establece la cabecera heredada X-XSS-Protection. Los navegadores modernos confían en defensas XSS integradas y CSP.

X-Frame-Options

Bloquea o limita incrustar tus páginas en iframes (defensa contra clickjacking).

Advertencia: Algunas vistas previas del personalizador de temas se rompen con esta cabecera.

header( 'X-Frame-Options: SAMEORIGIN' );

Apache:

#BEGIN WP Security Ninja - Prevent page-framing and click-jacking
	<IfModule mod_headers.c>
	Header always append X-Frame-Options SAMEORIGIN
	</IfModule>
#END WP Security Ninja - Prevent page-framing and click-jacking

Los valores permitidos incluyen DENY, SAMEORIGIN y (heredado) ALLOW-FROM. Ten cuidado si tu propio sitio usa iframes.

Nginx:

add_header X-Frame-Options "SAMEORIGIN";

X-Content-Type-Options

X-Content-Type-Options: nosniff reduce ataques de MIME sniffing en los que un navegador trata una subida que no es script como contenido ejecutable.

Referrer-Policy

Controla cuántos datos de referrer envía el navegador en navegación y cargas cross-origin.

Security Ninja usa por defecto strict-origin-when-cross-origin en instalaciones nuevas y el asistente de configuración:

  • Las peticiones same-origin siguen recibiendo la URL completa.
  • Las peticiones HTTPS cross-origin reciben solo el origen.
  • De HTTPS a HTTP no se envía nada.

Valores más estrictos como same-origin o no-referrer pueden romper incrustaciones como Google Maps o YouTube. Si las incrustaciones fallan tras activar cabeceras, comprueba Referrer-Policy primero. Los sitios existentes conservan su valor guardado.

header( 'Referrer-Policy: strict-origin-when-cross-origin' );

Apache:

#BEGIN WP Security Ninja - Set Referrer-Policy
	<IfModule mod_headers.c>
	Header set Referrer-Policy "strict-origin-when-cross-origin"
	</IfModule>
#END WP Security Ninja - Set Referrer-Policy

Nginx:

add_header Referrer-Policy "strict-origin-when-cross-origin";

Si las incrustaciones de YouTube muestran Error 153, consulta Error 153 en incrustaciones de YouTube (documentación en inglés).

Permissions-Policy

Permissions-Policy (antes Feature-Policy) controla funciones del navegador como cámara, micrófono y geolocalización. La sintaxis difiere de la cabecera Feature-Policy antigua, así que revisa configuraciones anteriores.

Ejemplo:

header( 'Permissions-Policy: geolocation=(self "https://example.com"), microphone=()' );

Apache:

#BEGIN WP Security Ninja - Set Permissions-Policy
	<IfModule mod_headers.c>
	Header set Permissions-Policy "geolocation=(self \"https://example.com\"), microphone=() "
	</IfModule>
#END WP Security Ninja - Set Permissions-Policy

Nginx:

add_header Permissions-Policy "geolocation=(self \"https://example.com\"), microphone=()";

Referencia: MDN Permissions-Policy.

Usar Security Ninja

Activa y ajusta cabeceras en Security Ninja → Correcciones, o empieza desde el asistente de instalación. Activa una cabecera cada vez y verifica que el front-end y la administración sigan funcionando.

¿Sigues atascado? Obtener ayuda o contáctanos .

Larger screenshot

Enlarged image