Odată cu fiecare pagină, serverul trimite browserului câteva rânduri de instrucțiuni, numite antete (headers). Unele dintre ele îi spun browserului să fie mai prudent: să folosească doar https://, să nu lase alte site-uri să-ți încadreze paginile, să nu trimită mai departe adresa completă a paginii. Le pui o singură dată, în .htaccess, și apără toți vizitatorii.
Ce vei reuși
- pornești HSTS, ca browserele să intre pe site doar prin
https://; - adaugi antetele de bază, care nu strică nimic pe un site obișnuit;
- verifici că serverul le trimite.
Înainte să începi
- Certificatul SSL e valid și „Force https” e pornit pentru domeniu și pentru
www(vezi Certificatul SSL gratuit (Let's Encrypt) și Redirecționare spre HTTPS și www). HSTS fără un certificat valid blochează site-ul. - Fă o copie a fișierului
.htaccess: în Enhance, fila „Files”, clic dreapta pe.htaccess» „Download”. - Serverele NBT Host folosesc Apache, care citește regulile din
.htaccess. - Denumirile din Enhance sunt în engleză, exact cum apar pe ecran. Dacă panoul e în română, îl treci pe engleză din dreapta sus: „My account” » „Language”.
Ce face fiecare antet
| Antet | Ce face |
|---|---|
Strict-Transport-Security (HSTS) | browserul ține minte, pe perioada dată, că site-ul se deschide doar pe https://, chiar dacă cineva scrie http:// |
X-Content-Type-Options: nosniff | browserul nu „ghicește” tipul unui fișier; un fișier urcat ca imagine nu poate fi rulat ca script |
X-Frame-Options: SAMEORIGIN | alte site-uri nu-ți pot încadra paginile într-un <iframe>, deci nu pot păcăli vizitatorii să apese butoane ascunse |
Referrer-Policy: strict-origin-when-cross-origin | când vizitatorul pleacă spre alt site, acela află doar domeniul tău, nu adresa completă a paginii |
Permissions-Policy | oprește accesul paginii la cameră, microfon sau locație, dacă site-ul nu le folosește |
Pașii
A. Adaugi antetele
- În Enhance, deschide „Websites”, site-ul, fila „Files” și intră în
public_html. - Clic dreapta pe
.htaccess» „Edit”. Dacă nu există, creează-l cu „New file”. - Adaugă la finalul fișierului:
<IfModule mod_headers.c> Header always set Strict-Transport-Security "max-age=31536000" "expr=%{HTTPS} == 'on'" 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=()" </IfModule> - La WordPress, pune blocul în afara rândurilor
# BEGIN WordPressși# END WordPress: ce e între ele poate fi rescris de WordPress. - Apasă „Save”.
max-age=31536000 înseamnă un an. Dacă vrei să începi cu grijă, pune întâi max-age=300 (5 minute), verifică site-ul o zi, apoi crește la un an.
B. Verifici
- Deschide site-ul, apasă F12 (pe Mac Cmd+Option+I), fila Network (Rețea), reîncarcă pagina și apasă pe primul rând, cel al paginii. La Response Headers trebuie să vezi antetele adăugate.
- Sau, din Terminal (Mac, Linux) ori PowerShell (Windows):
curl -I https://domeniul-tau.ro/. - Verifică paginile importante: formularele, plata, hărțile, videoclipurile încorporate.
Ce să NU adaugi fără să știi ce faci
includeSubDomainsșipreloadla HSTS. CuincludeSubDomains, orice subdomeniu fără certificat (de exemplu un serviciu extern pus peprogramari.domeniul-tau.ro) devine inaccesibil.preloadtrimite domeniul într-o listă inclusă în browsere, din care se iese greu, în luni. Pentru un site mic nu e nevoie de ele.Content-Security-Policy(CSP). E cel mai puternic antet, dar și cel mai ușor de greșit: un CSP prea strict blochează Google Analytics, fonturile, chatul sau plata. Dacă vrei unul, începe cu varianta care doar raportează,Content-Security-Policy-Report-Only, și cere ajutorul celui care a făcut site-ul.X-Frame-Optionspe un site care chiar trebuie încadrat de alt site al tău (de exemplu un formular pus într-un<iframe>pe alt domeniu). Acolo scoate rândul.
Dacă ceva nu merge
- Site-ul dă „500 Internal Server Error” după salvare. O greșeală de scriere în bloc, de obicei o ghilimea lipsă. Șterge blocul, salvează și pune-l din nou, copiat exact (vezi Eroarea 500 Internal Server Error și pagina albă).
- Nu vezi antetele. Verifică să fi salvat
.htaccessîn folderul site-ului (public_htmlsau folderul subdomeniului), apoi golește cache-ul (pluginul de cache, Cloudflare) și reîncarcă. - După HSTS, un subdomeniu nu se mai deschide. Subdomeniul nu are certificat valid. Emite-i certificatul (vezi Certificatul SSL gratuit (Let's Encrypt)). Dacă ai pus
includeSubDomains, scoate-l; browserele care l-au văzut îl țin minte până expirămax-age. - Un
<iframe>de pe alt site al tău nu se mai încarcă. E efectul luiX-Frame-Options. Scoate rândul sau scrie-ne și îți spunem varianta cu CSPframe-ancestors.
