Nginx y Apache Security Headers

Creado: Octubre 5, 2022 - Actualizado: Octubre 18, 2022

Security Headers para Apache y Nginx actualizados, una breve reseña de los mismos. Este breve articulo no es mas que una nota o cheatsheet de los security headers a utilizar y requeridos en su mayoría. Si desean leer sobre el tema pueden seguir el siguiente enlace.

add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Permitted-Cross-Domain-Policies "none" always;
add_header Feature-Policy "microphone none;camera none;geolocation none;";
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "no-referrer-when-downgrade" always;
add_header Content-Security-Policy "default-src * data: 'unsafe-eval' 'unsafe-inline'" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header Expect-CT "max-age=31536000; report-uri=https://www.barrahome.org/contact";
add_header Access-Control-Allow-Origin "*" always;

El equivalente para Apache seria utilizando algo como esto:

<IfModule mod_headers.c>
   Header always set X-XSS-Protection "1; mode=block"
<IfModule mod_headers.c>

Pueden observar los resultados aplicados en este blog visitando el sitio de Serpworx.

Actualización: Si gustan aprender sobre los distintos headers de seguridad los invito a visitar el sitio de Scott Helme el cual contiene un extenso articulo sobre COEP COOP CORP CORS CORB y mas.

Ahí mismo encontraran las explicaciones para:

  • COEP: Cross Origin Embedder Policy
  • COOP: Cross Origin Opener Policy
  • CORP: Cross Origin Resource Policy
  • CORS: Cross Origin Resource Sharing
  • CORB: Cross Origin Read Blocking

La salida de las cabeceras se ven de la siguiente forma:

curl -I https://www.barrahome.org
HTTP/2 200
server: nginx
date: Tue, 18 Oct 2022 23:20:03 GMT
content-type: text/html; charset=UTF-8
vary: Accept-Encoding
x-powered-by: Myself & few nerds.
x-frame-options: SAMEORIGIN
x-permitted-cross-domain-policies: none
feature-policy: microphone none;camera none;geolocation none;
permissions-policy: microphone none;camera none;geolocation none;
x-xss-protection: 1; mode=block
x-content-type-options: nosniff
referrer-policy: no-referrer-when-downgrade
content-security-policy: default-src * data: 'unsafe-eval' 'unsafe-inline'
strict-transport-security: max-age=31536000; includeSubDomains; preload
expect-ct: max-age=31536000; report-uri=https://www.barrahome.org/contacto
access-control-allow-origin: https://www.barrahome.org/

Artículos relacionados