Desenvolupament web

Per què hauries d'afegir capçaleres de seguretat al teu lloc

Què són les capçaleres de seguretat HTTP, quines funcions compleixen i com configurar-les al .htaccess d'un WordPress.

Per què hauries d'afegir capçaleres de seguretat al teu lloc

Per què hauries d’afegir capçaleres de seguretat al teu lloc

Les capçaleres de seguretat tenen un paper crucial en la protecció del teu lloc web. No només augmenten la seguretat, sinó que també indiquen als navegadors moderns quines funcions del navegador estan permeses. Això és essencial per mantenir el lloc protegit contra les amenaces informàtiques i garantir una experiència d’usuari segura.

Tipus de capçaleres de seguretat i les seves funcions

Hi ha diversos tipus de capçaleres de seguretat, i cadascuna té un propòsit específic. Aquí t’explic algunes de les més importants:

Content-Security-Policy (política de seguretat de contingut)

Aquesta capçalera et permet definir les fonts aprovades des de les quals el navegador pot carregar contingut al teu lloc. En especificar les fonts que vols permetre, pots protegir els visitants d’una varietat de problemes, inclosos els intents de Cross Site Scripting (XSS). És crucial que aquestes capçaleres es configurin correctament, ja que controlen quin contingut es carrega i quin es bloqueja.

<IfModule mod_headers.c>
Header set Content-Security-Policy "upgrade-insecure-requests"
</IfModule>

Strict-Transport-Security (HSTS)

La capçalera Strict-Transport-Security indica als navegadors que només s’hi ha d’accedir a través d’HTTPS en lloc d’HTTP. Això garanteix una connexió segura i xifrada, cosa que és essencial per protegir la privacitat de les dades dels visitants.

<IfModule mod_headers.c>
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains"
</IfModule>

X-Xss-Protection (protecció contra atacs XSS)

Aquesta capçalera atura la càrrega de pàgines quan es detecten atacs de Cross-Site Scripting (XSS). Assegura que el teu lloc no sigui vulnerable a aquest tipus d’atacs, cosa que és crucial per a la seguretat en línia.

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

X-Frame-Options (opcions de marc)

X-Frame-Options protegeix els visitants contra possibles atacs de «clickjacking» en especificar quins llocs tenen permès incrustar el teu lloc dins d’un marc. La seva senzillesa el converteix en una excel·lent opció per implementar sense complicacions.

<IfModule mod_headers.c>
Header set X-Frame-Options "SAMEORIGIN"
</IfModule>

X-Content-Type-Options (opcions de tipus de contingut)

Aquesta capçalera només admet un valor vàlid i evita que els navegadors intentin interpretar el tipus de contingut d’una resposta d’una manera diferent a la declarada pel servidor. Això redueix l’exposició a baixades no desitjades i als riscos associats a la càrrega de contingut dels usuaris.

<IfModule mod_headers.c>
Header set X-Content-Type-Options "nosniff"
</IfModule>

Referrer-Policy (política de referents)

La política de referents indica al navegador quin referent ha d’utilitzar en clicar enllaços cap a altres llocs. Pot ser útil per limitar la quantitat d’informació que es transmet amb cada clic.

<IfModule mod_headers.c>
Header set Referrer-Policy "strict-origin-when-cross-origin"
</IfModule>

Permissions-Policy (política de permisos)

Aquesta política permet desactivar o activar certes funcions de la plataforma web, tant al teu lloc com a les pàgines que incrustes. Ofereix un control més fi sobre com s’executen les característiques de la plataforma web.

<IfModule mod_headers.c>
Header set Permissions-Policy "geolocation=self"
</IfModule>

Com comprovar les teves capçaleres de seguretat

Si ja has configurat capçaleres de seguretat al teu lloc i vols comprovar si són vàlides, pots utilitzar l’eina externa de securityheaders.com per fer-ho.

El meu codi personalitzat

Aquí tens el codi que jo utilitzo a les meves instal·lacions de WordPress, al .htaccess:

Aquest seria el codi bàsic:

# Inicio Security Headers
<IfModule mod_headers.c>
Header set Content-Security-Policy "upgrade-insecure-requests"
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Header set X-Xss-Protection "1; mode=block"
Header set X-Frame-Options "SAMEORIGIN"
Header set X-Content-Type-Options "nosniff"
Header set Referrer-Policy "strict-origin-when-cross-origin"
Header set Permissions-Policy "geolocation=self"
</IfModule>
# Fin Security Headers

I aquest és el codi, una mica més complet:

# Security HttpHeaders
<IfModule mod_headers.c>
Header set Content-Security-Policy "upgrade-insecure-requests"
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" env=HTTPS
Header set X-Xss-Protection "1; mode=block"
Header set X-Frame-Options "SAMEORIGIN"
Header set X-Content-Type-Options "nosniff"
Header set Referrer-Policy "strict-origin-when-cross-origin"
Header set Permissions-Policy "geolocation=self"
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods "GET,POST"
Header set Access-Control-Allow-Headers "Content-Type, Authorization"
Header set Cross-Origin-Embedder-Policy "unsafe-none; report-to='default'"
Header set Cross-Origin-Embedder-Policy-Report-Only "unsafe-none; report-to='default'"
Header set Cross-Origin-Opener-Policy "unsafe-none"
Header set Cross-Origin-Opener-Policy-Report-Only "unsafe-none; report-to='default'"
Header set Cross-Origin-Resource-Policy "cross-origin"
Header set X-Permitted-Cross-Domain-Policies "none"
</IfModule>