Los encabezados de seguridad HTTP son instrucciones que el servidor envía al navegador en cada respuesta, indicándole cómo comportarse de forma más segura al mostrar tu sitio. Se configuran en el servidor (Nginx, Apache, o la plataforma que uses) con unas pocas líneas, sin tocar el código de la aplicación, y bloquean familias enteras de ataques web. Los más importantes: HSTS (Strict-Transport-Security) obliga al navegador a usar siempre HTTPS, impidiendo que alguien fuerce una conexión sin cifrar. Content-Security-Policy (CSP) es el más potente y el más complejo: controla de dónde puede cargar recursos la página (scripts, estilos, imágenes), lo que corta de raíz el XSS (inyección de scripts maliciosos), el ataque web más común. X-Content-Type-Options: nosniff impide que el navegador «adivine» el tipo de un archivo y lo ejecute cuando no debía. X-Frame-Options (o la directiva frame-ancestors de CSP) evita el clickjacking (que tu sitio se incruste en otro para engañar al usuario). Referrer-Policy controla cuánta información de origen se filtra al navegar a otros sitios. Y Permissions-Policy limita qué APIs del navegador (cámara, micrófono, ubicación) puede usar la página. Son una de las mejoras de seguridad con mejor relación esfuerzo/protección: minutos de configuración a cambio de cerrar vías de ataque enteras. Dos avisos: CSP mal configurada rompe el sitio (bloquea recursos legítimos), así que se despliega con cuidado y en modo de prueba primero; y no son una bala de plata —complementan, no reemplazan, un código seguro—. Después de configurarlos, conviene comprobarlos con una herramienta como Mozilla Observatory, que analiza tu sitio y te da una nota.
Ver índice de contenidos
Qué son
Cada vez que un navegador pide una página, el servidor responde con el contenido y con un conjunto de encabezados (cabeceras HTTP): metadatos que acompañan a la respuesta. Los encabezados de seguridad son un subconjunto de esos metadatos que le dan al navegador instrucciones defensivas: «usá siempre HTTPS», «no cargues scripts de otros sitios», «no te dejes incrustar en un iframe ajeno».
En el servidor, no en el código
Lo atractivo de estos encabezados es dónde y cómo se aplican. Se configuran una vez en el servidor web (unas líneas en Nginx, Apache o tu plataforma de hosting) y se aplican a todas las respuestas del sitio, sin modificar el código de la aplicación. Eso los convierte en una de las defensas más rentables: unos minutos de configuración cierran vías de ataque que, resueltas desde el código, exigirían mucho más trabajo. No sustituyen a programar de forma segura —son una capa adicional—, pero por su bajo coste y su alto impacto, no ponerlos es dejar protección gratis sobre la mesa.
Los principales
Los encabezados de seguridad que más importan y qué ataque bloquea cada uno:
| Encabezado | Qué hace | Protege de |
|---|---|---|
| Strict-Transport-Security (HSTS) | Obliga a usar siempre HTTPS | Conexiones sin cifrar, degradación, interceptación |
| Content-Security-Policy (CSP) | Controla de dónde se cargan los recursos | XSS (inyección de scripts), el ataque web más común |
| X-Content-Type-Options: nosniff | Impide adivinar el tipo de un archivo | Ejecución de archivos con tipo confundido |
| X-Frame-Options / frame-ancestors | Evita que tu sitio se incruste en otro | Clickjacking |
| Referrer-Policy | Controla qué información de origen se filtra | Fuga de información al navegar a otros sitios |
| Permissions-Policy | Limita qué APIs del navegador usa la página | Abuso de cámara, micrófono, ubicación |
# Encabezados de seguridad en Nginx (dentro del bloque server)
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "DENY" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
# CSP: empezar restrictivo y ajustar según lo que el sitio necesite de verdad
add_header Content-Security-Policy "default-src 'self'" always;CSP y comprobación
La Content-Security-Policy merece atención aparte: es el encabezado más poderoso y, a la vez, el más fácil de configurar mal.
El XSS (cross-site scripting) —que un atacante consiga inyectar y ejecutar su propio script en tu página, robando sesiones o datos— es de los ataques web más comunes y dañinos. La CSP lo corta de raíz al decirle al navegador exactamente de qué orígenes puede cargar y ejecutar recursos: si un script no viene de una fuente que autorizaste, el navegador lo bloquea, aunque el atacante haya logrado inyectarlo. Es la defensa más eficaz contra el XSS. El precio de esa potencia es la complejidad: una CSP demasiado restrictiva rompe tu propio sitio (bloquea los scripts, estilos o imágenes legítimos que la página necesita), y una demasiado laxa no protege. Por eso se despliega con método: empezar restrictivo, usar el modo Content-Security-Policy-Report-Only (que reporta lo que bloquearía sin bloquearlo de verdad) para descubrir qué recursos legítimos usa el sitio, ajustar la política hasta que no rompa nada, y recién ahí activarla en modo bloqueo.
Poner los encabezados es solo la mitad; hay que verificar que quedaron bien. Herramientas gratuitas como Mozilla Observatory (u otros analizadores de cabeceras) escanean tu sitio, listan qué encabezados tenés y cuáles faltan, detectan errores de configuración y te dan una nota con recomendaciones concretas. Es la forma rápida de pasar de «creo que están» a «sé que están y bien». Y un recordatorio de fondo: los encabezados son una capa de la seguridad web, no toda ella. Complementan —no reemplazan— validar la entrada, escapar la salida, gestionar bien las sesiones y usar HTTPS. Ponerlos es de las cosas más rentables que podés hacer; creer que con eso ya está todo resuelto, un error.
Errores frecuentes
- No poner ningún encabezado de seguridad. Es dejar protección gratis sin usar; son de las defensas más rentables.
- Activar una CSP restrictiva de golpe en producción. Rompe el sitio al bloquear recursos legítimos; probar primero en modo report-only.
- Poner HSTS sin tener HTTPS bien montado. Obliga a HTTPS; si el certificado falla, el sitio queda inaccesible.
- Creer que los encabezados reemplazan el código seguro. Son una capa adicional; no sustituyen validar entradas ni escapar salidas.
- Configurar y no comprobar. Un error de sintaxis deja el encabezado sin efecto; verificar con un analizador.
- Copiar una CSP de otro sitio sin adaptarla. Cada sitio carga recursos distintos; una CSP ajena rompe o no protege.
- Olvidar el atributo
alwaysen Nginx. Sin él, el encabezado puede no enviarse en respuestas de error.
Preguntas frecuentes
¿Qué son los encabezados de seguridad HTTP?
Los encabezados de seguridad HTTP son instrucciones que un servidor web envía al navegador dentro de las respuestas HTTP, junto con el contenido de la página, y que le indican al navegador cómo debe comportarse de manera más segura al procesar y mostrar ese sitio. Para entenderlos, conviene saber que cada vez que un navegador solicita una página, el servidor responde no solo con el contenido, sino también con un conjunto de metadatos llamados encabezados o cabeceras, que acompañan a la respuesta y aportan información y directivas sobre cómo tratarla. Los encabezados de seguridad son un subconjunto de esas cabeceras cuya finalidad específica es reforzar la protección, dando al navegador órdenes defensivas concretas, como usar siempre una conexión cifrada, no cargar scripts que no provengan de orígenes autorizados, o no permitir que la página se incruste dentro de otra. De este modo, aprovechan que el navegador es quien finalmente ejecuta y muestra el contenido para que aplique una serie de restricciones que bloquean familias enteras de ataques web. Una característica muy valiosa de estos encabezados es dónde y cómo se aplican, ya que se configuran una sola vez en el servidor web, mediante unas pocas líneas en la configuración del servidor o de la plataforma de alojamiento, y se aplican automáticamente a todas las respuestas del sitio sin necesidad de modificar el código de la aplicación. Esto los convierte en una de las mejoras de seguridad con mejor relación entre el esfuerzo requerido y la protección obtenida, porque con unos minutos de configuración se cierran vías de ataque que, abordadas desde el código, exigirían mucho más trabajo. No obstante, es importante entender que los encabezados de seguridad son una capa adicional de defensa y no un sustituto de la programación segura, de modo que complementan, pero no reemplazan, buenas prácticas como validar las entradas, escapar las salidas, gestionar correctamente las sesiones y usar cifrado. En resumen, son un conjunto de directivas sencillas de aplicar en el servidor que instruyen al navegador para que se comporte de forma más segura, cerrando puertas a ataques comunes, y que por su bajo coste y alto impacto conviene configurar siempre en cualquier sitio web.
¿Qué es HSTS y para qué sirve?
HSTS, cuyas siglas corresponden en inglés a seguridad de transporte estricta, es un encabezado de seguridad HTTP que obliga al navegador a comunicarse con un sitio web siempre a través de una conexión cifrada, es decir, mediante HTTPS, impidiendo el uso de conexiones sin cifrar. Su utilidad se entiende al considerar los riesgos de las conexiones no cifradas. Aunque un sitio disponga de HTTPS, si no se toman medidas adicionales podría producirse una conexión inicial sin cifrar, o un atacante situado en la red podría intentar forzar o degradar la conexión a una versión sin cifrar para interceptar o manipular el tráfico, en lo que se conoce como ataques de degradación o de intermediario. HSTS resuelve esto indicando al navegador, mediante el encabezado correspondiente, que durante un periodo determinado debe conectarse a ese sitio exclusivamente por HTTPS y rechazar cualquier intento de conexión sin cifrar, incluso si el usuario escribe la dirección sin especificar el protocolo seguro o si algún enlace apunta a la versión no cifrada. De este modo, una vez que el navegador ha recibido la instrucción de HSTS, protege al usuario forzando el cifrado en todas las visitas posteriores dentro del plazo indicado, cerrando la ventana que aprovecharían los ataques de degradación. El encabezado incluye un parámetro que define durante cuánto tiempo debe recordarse esta obligación, y puede extenderse también a los subdominios del sitio. Es una defensa muy recomendable para cualquier sitio que use HTTPS, pero conlleva una precaución importante: dado que obliga estrictamente al uso de HTTPS, solo debe activarse cuando el sitio tiene el HTTPS correctamente configurado y funcionando de forma fiable, ya que si el certificado caducara o hubiera un problema con la conexión cifrada, los navegadores que hayan recibido la instrucción de HSTS se negarían a acceder por la vía no cifrada y el sitio quedaría inaccesible para ellos hasta resolver el problema. Por ello, la recomendación es implementar HSTS una vez que se ha verificado que el HTTPS es sólido y estable, comenzando eventualmente con periodos más cortos y ampliándolos al ganar confianza. En conjunto, HSTS es un encabezado sencillo y muy eficaz para garantizar que las comunicaciones con un sitio web se realicen siempre de forma cifrada, protegiendo la confidencialidad e integridad del tráfico frente a los intentos de forzar conexiones inseguras.
¿Qué es la Content-Security-Policy?
La Content-Security-Policy, o política de seguridad de contenido, es un encabezado de seguridad HTTP que permite controlar con precisión desde qué orígenes puede una página web cargar y ejecutar recursos, como scripts, hojas de estilo, imágenes, fuentes o marcos, y es considerado el encabezado de seguridad más potente, aunque también el más complejo de configurar correctamente. Su gran valor reside en que constituye la defensa más eficaz contra el cross-site scripting, uno de los ataques web más comunes y dañinos, que consiste en que un atacante logra inyectar y ejecutar su propio código malicioso en la página de una víctima, con lo que puede robar sesiones, datos, credenciales o realizar acciones en nombre del usuario. La política de seguridad de contenido corta este ataque de raíz porque, al indicar al navegador exactamente qué orígenes están autorizados para cargar y ejecutar recursos, hace que cualquier script que no provenga de una fuente permitida sea bloqueado por el propio navegador, incluso si el atacante ha conseguido introducirlo en la página; de este modo, aunque exista una vía de inyección, el código malicioso no llega a ejecutarse. Su funcionamiento se basa en definir una serie de directivas que especifican las políticas para cada tipo de recurso, indicando por ejemplo que los scripts solo pueden cargarse desde el propio sitio o desde determinados dominios de confianza. La contrapartida de esta potencia es la complejidad y la delicadeza de su configuración, ya que una política demasiado restrictiva puede bloquear recursos legítimos que el propio sitio necesita, rompiendo su funcionamiento, mientras que una política demasiado permisiva no protege adecuadamente. Por ello, se recomienda desplegarla con método: comenzar con una política restrictiva, utilizar primero un modo especial que solo reporta lo que se bloquearía sin bloquearlo realmente, lo que permite descubrir qué recursos legítimos utiliza el sitio sin interrumpir su funcionamiento, ajustar la política a partir de esa información hasta que no rompa nada, y solo entonces activarla en modo de bloqueo efectivo. Además, conviene no copiar la política de otro sitio sin adaptarla, ya que cada sitio carga recursos distintos y una política ajena podría romperlo o no protegerlo. Bien configurada, la Content-Security-Policy es una de las defensas más valiosas para la seguridad de un sitio web, especialmente frente al cross-site scripting, pero requiere cuidado, pruebas y ajuste para implementarla sin efectos secundarios.
¿Puedo romper mi sitio al configurar estos encabezados?
Sí, es posible romper o afectar al funcionamiento de un sitio web al configurar mal ciertos encabezados de seguridad, especialmente la política de seguridad de contenido y, en menor medida, el encabezado que fuerza el uso de conexiones cifradas, por lo que conviene aplicarlos con cuidado y siguiendo buenas prácticas. El caso más habitual y delicado es el de la política de seguridad de contenido, ya que su función consiste precisamente en restringir desde qué orígenes puede la página cargar y ejecutar recursos, de modo que si la política es demasiado restrictiva o no contempla todos los recursos legítimos que el sitio utiliza, el navegador bloqueará esos recursos, lo que puede hacer que dejen de funcionar scripts, estilos, imágenes u otros elementos, y que el sitio se muestre roto o pierda funcionalidad. Por eso, la recomendación es no activar una política de seguridad de contenido restrictiva de golpe en producción, sino desplegarla de forma gradual y controlada: primero utilizando el modo que solo informa de lo que bloquearía sin llegar a bloquearlo, lo que permite observar durante un tiempo qué recursos legítimos se verían afectados y ajustar la política en consecuencia, y solo cuando se ha comprobado que no rompe nada, pasar a activarla en modo de bloqueo real. Otro encabezado que requiere precaución es el que obliga a usar siempre conexión cifrada, ya que si se activa sin tener el cifrado correctamente configurado y funcionando de forma estable, o si posteriormente surge un problema con el certificado, los navegadores que hayan recibido la instrucción se negarán a acceder al sitio por la vía no cifrada y este podría quedar inaccesible para ellos; por eso solo debe activarse cuando la conexión cifrada es sólida y fiable. En cambio, otros encabezados de seguridad, como los que impiden adivinar el tipo de archivo, los que evitan la incrustación en marcos o los que controlan la información de origen, son en general más seguros de aplicar y rara vez rompen un sitio, aunque siempre conviene revisar que no interfieran con funcionalidades legítimas, como la incrustación intencionada del sitio en otro. La conclusión práctica es que los encabezados de seguridad son muy recomendables, pero deben configurarse con conocimiento y pruebas, especialmente la política de seguridad de contenido, utilizando los modos de prueba disponibles, verificando el resultado con herramientas de análisis, y adaptando siempre las políticas a las necesidades concretas del sitio en lugar de copiarlas sin ajustarlas, para obtener la protección que aportan sin provocar efectos secundarios no deseados.
¿Dónde configuro los encabezados de seguridad?
Los encabezados de seguridad se configuran en el lado del servidor, es decir, en el software o la plataforma que sirve el sitio web y que genera las respuestas HTTP, y no en el código de la aplicación, aunque existen varias ubicaciones posibles según la infraestructura concreta que se utilice. La forma más habitual es configurarlos directamente en el servidor web, como en la configuración de servidores tipo Nginx o Apache, donde se añaden unas pocas directivas que indican al servidor que incluya esos encabezados en todas las respuestas que envía; por ejemplo, en un servidor de tipo Nginx se emplean directivas de adición de encabezados dentro del bloque de configuración correspondiente al sitio. Esta es una de las razones por las que estos encabezados resultan tan cómodos y rentables, ya que se definen una sola vez en la configuración del servidor y se aplican automáticamente a todo el sitio sin tocar el código. En entornos donde hay un servidor intermediario o proxy inverso delante de la aplicación, que es una configuración muy común, ese proxy suele ser un lugar excelente y centralizado para añadir los encabezados de seguridad, de modo que se apliquen a todo el tráfico que pasa por él. También es posible configurar los encabezados a nivel de la aplicación o del marco de trabajo que la sustenta, o mediante la plataforma de alojamiento o el servicio de distribución de contenido que se utilice, muchos de los cuales ofrecen opciones específicas para definir encabezados de seguridad desde su panel de control o su configuración. La elección del lugar concreto depende de la arquitectura de cada sitio, pero la idea común es que se trata de una configuración del entorno que sirve la web y no una modificación del código de la aplicación. Un detalle importante en algunos servidores es asegurarse de que los encabezados se envíen en todas las respuestas, incluidas las de error, para lo cual ciertos servidores requieren indicarlo explícitamente. Sea cual sea el método elegido, tras configurar los encabezados es fundamental comprobar que se están enviando correctamente y sin errores de sintaxis, utilizando herramientas de análisis de encabezados que examinan el sitio, indican qué encabezados están presentes y cuáles faltan, detectan configuraciones incorrectas y ofrecen recomendaciones. En resumen, los encabezados de seguridad se configuran en el servidor web, en un proxy inverso, en la plataforma de alojamiento o, en algunos casos, en la aplicación, siempre como parte de la configuración del entorno de servicio, y su aplicación centralizada es precisamente lo que los hace tan eficientes.
¿Los encabezados de seguridad hacen mi sitio totalmente seguro?
No, los encabezados de seguridad no hacen que un sitio web sea totalmente seguro por sí solos, sino que constituyen una capa adicional y muy valiosa de protección que complementa, pero en ningún caso sustituye, a las demás buenas prácticas de seguridad, especialmente a la programación segura de la aplicación. Es importante entender bien este matiz para no caer en una falsa sensación de seguridad. Los encabezados de seguridad son extraordinariamente útiles y rentables porque, con una configuración sencilla en el servidor, permiten al navegador bloquear familias enteras de ataques web comunes, como la inyección de scripts maliciosos, el secuestro de clics o la degradación de la conexión, y por su bajo coste y alto impacto conviene aplicarlos siempre. Sin embargo, actúan como una defensa a nivel del comportamiento del navegador y no resuelven los problemas de seguridad que residen en la propia lógica y el código de la aplicación. Por ejemplo, aunque la política de seguridad de contenido es la mejor defensa contra la inyección de scripts, no elimina la necesidad de validar correctamente las entradas de los usuarios y de escapar adecuadamente las salidas, prácticas que atacan el problema en su raíz; del mismo modo, los encabezados no protegen frente a fallos como una mala gestión de la autenticación y las sesiones, vulnerabilidades en las consultas a bases de datos, errores de control de acceso que permiten a un usuario ver datos de otro, o lógica de negocio defectuosa. Todos esos problemas deben abordarse en el diseño y el desarrollo de la aplicación, mediante prácticas de programación segura, revisión de código, pruebas de seguridad y un enfoque de defensa en capas. Por ello, la forma correcta de entender los encabezados de seguridad es como una de las múltiples capas de una estrategia de seguridad web integral, que incluye también el uso de cifrado, la validación y el escape de datos, una buena gestión de la autenticación y los permisos, la actualización de los componentes, el modelado de amenazas y la realización de análisis de vulnerabilidades, entre otras medidas. Configurar los encabezados de seguridad es una de las acciones con mejor relación entre esfuerzo y beneficio que se pueden tomar, y no hacerlo sería desaprovechar una protección casi gratuita, pero creer que con ellos el sitio ya está completamente seguro sería un error peligroso, ya que la seguridad real surge de la combinación de muchas capas y prácticas que se refuerzan mutuamente.
Fuentes
Documentación oficial y material de la comunidad consultados para esta guía. Fecha de consulta: 28 de julio de 2026.
Aportes de la comunidad Underc0de
- Underc0de, foro. Sección Seguridad informática. Hardening web.
- Underc0de, foro. Sección Desarrollo web. Seguridad de sitios.
Documentación oficial
- OWASP. Secure Headers Project. Encabezados recomendados.
- MDN. HTTP headers. Referencia de cabeceras.
- MDN. Content Security Policy (CSP). Guía de CSP.
- Mozilla. Mozilla Observatory. Comprobar los encabezados de un sitio.