HSTS și headere de securitate pentru site-ul dumneavoastră web
Pentru fiecare pagină, serverul dumneavoastră web trimite headere: linii scurte cu instrucțiuni pentru browser. Acestea determină, parțial, cât de sigur gestionează browserul site-ul dumneavoastră. Aici citiți ce este HSTS, ce alte headere de securitate există și cum le configurați și testați.
Mai întâi site-ul dumneavoastră trebuie să aibă un certificat funcțional și să redirecționeze vizitatorii către https. Despre acest lucru puteți citi în Activarea, reînnoirea și rezolvarea problemelor certificatului SSL și Redirecționarea obligatorie a vizitatorilor către https.
Ce face HSTS?
Redirecționarea către https are un moment vulnerabil: prima cerere prin http este încă necriptată. Cineva aflat în aceeași rețea, de exemplu pe o rețea wifi publică, poate intercepta acea cerere. HSTS (HTTP Strict Transport Security) rezolvă acest lucru. Site-ul dumneavoastră trimite prin https acest header:
Strict-Transport-Security: max-age=31536000
Browserul reține apoi că poate deschide site-ul dumneavoastră doar prin https. Dacă un vizitator tastează ulterior http://, browserul transformă el însuși adresa în https, chiar înainte ca ceva să circule prin rețea. Un header HSTS primit prin http simplu este ignorat de browser.
| Element | Semnificație |
|---|---|
max-age | Cât timp reține browserul această informație, în secunde. Testul internet.nl consideră cel puțin un an (31536000) ca fiind suficient. |
includeSubDomains | Se aplică și tuturor subdomeniilor, cum ar fi shop.domeniuldvs.nl și mail.domeniuldvs.nl. |
preload | Solicitați includerea în lista integrată în browsere (hstspreload.org). Astfel, chiar și prima vizită este protejată. Pentru aceasta sunt necesare printre altele un an, includeSubDomains și https pe toate subdomeniile. Eliminarea din listă durează mult timp. |
max-age=0 | Șterge instrucțiunea reținută, la următoarea vizită prin https. |
includeSubDomains, acest lucru se aplică și fiecărui subdomeniu, cum ar fi o pagină veche de cameră sau imprimantă fără certificat. De aceea, construiți treptat: începeți cu un max-age scurt, de exemplu o zi (86400), verificați dacă totul funcționează și creșteți progresiv până la un an.HSTS la WebOké
Pe majoritatea serverelor noastre, serverul web trimite HSTS în mod implicit pentru fiecare site web accesat prin https: Strict-Transport-Security: max-age=31536000. Acesta este un an, fără includeSubDomains și fără preload. Pentru aceasta nu trebuie să faceți nimic. Pe câteva servere nu este activat implicit; acolo îl activați chiar dumneavoastră. Dacă site-ul dumneavoastră trimite deja HSTS și cu ce max-age, puteți vedea în instrumentele pentru dezvoltatori ale browserului dumneavoastră sau în testul internet.nl (vedeți mai jos).
Comutatorul HSTS în DirectAdmin
În DirectAdmin mergeți la Domeniuri și faceți clic pe numele domeniului dumneavoastră. Dacă Conexiune SSL securizată este activată, vedeți la HSTS comutatorul Activare HTTP Strict Transport Security. Faceți apoi clic pe Editare pentru a salva. Cum funcționează acest proces pas cu pas, citiți în Redirecționarea vizitatorilor întotdeauna către https.
Dacă site-ul dumneavoastră trimite deja HSTS, nu aveți nevoie de comutator. Activați-l doar dacă site-ul dumneavoastră nu trimite încă HSTS. Configurați HSTS într-un singur loc: în DirectAdmin sau în .htaccess, nu în ambele. Dacă browserul primește două headere HSTS, folosește doar primul.
Celelalte headere de securitate
| Header | Împotriva a ce | Valoare de început |
|---|---|---|
X-Content-Type-Options | Browserul ghicește singur ce tip de fișier este, astfel încât o "imagine" încărcată poate fi executată ca script. | nosniff (singura valoare validă) |
Content-Security-Policy: frame-ancestors sau X-Frame-Options | Clickjacking: un alt site încarcă invizibil pagina dumneavoastră într-un cadru (frame), astfel încât vizitatorii dau clic fără să știe pe butoanele dumneavoastră. | frame-ancestors 'self', sau headerul mai vechi X-Frame-Options: SAMEORIGIN |
Referrer-Policy | La un clic către un alt site, browserul trimite adresa paginii anterioare, uneori cu un termen de căutare sau un număr de comandă inclus. | strict-origin-when-cross-origin, sau mai strict same-origin ori no-referrer. Internet.nl consideră corecte doar valorile stricte. |
Permissions-Policy | Determină ce funcții de browser pot folosi pagina dumneavoastră și cadrele incluse, cum ar fi camera, microfonul și locația. | camera=(), microphone=(), geolocation=() dezactivează aceste trei. Dacă site-ul dumneavoastră folosește una dintre aceste funcții, omiteți-o. |
Content-Security-Policy (complet) | Limitează locurile de unde pot fi încărcate scripturi, stiluri și imagini. Acest lucru face ca scripturile malițioase inserate (XSS) să fie mult mai dificile. | Personalizat pentru fiecare site. Evitați unsafe-inline, unsafe-eval și wildcard-uri. |
Configurare în .htaccess
Adăugați aceste linii la începutul fișierului .htaccess din folderul public_html al domeniului dumneavoastră. Faceți mai întâi o copie a fișierului.
<IfModule mod_headers.c> Header always set X-Content-Type-Options "nosniff" Header always set Content-Security-Policy "frame-ancestors 'self'" Header always set Referrer-Policy "strict-origin-when-cross-origin" Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()" # Doar dacă site-ul dumneavoastră nu trimite încă HSTS (vedeți mai sus): # Header always set Strict-Transport-Security "max-age=31536000" </IfModule>
Adăugați includeSubDomains doar atunci când sunteți sigur că fiecare subdomeniu are https. Dacă folosiți WordPress, puteți configura headerele și cu un plugin. Alegeți un plugin cunoscut care este încă actualizat și configurați fiecare header într-un singur loc: în plugin sau în .htaccess.
Content-Security-Policy-Report-Only. Acesta nu blochează nimic, dar arată în consola browserului ce ar fi fost blocat. Dacă aveți dubii, lăsați acest lucru pe seama dezvoltatorului dumneavoastră web, sau începeți doar cu frame-ancestors.Testare
- Internet.nl: introduceți domeniul dumneavoastră în testul de site web de pe internet.nl.
- Browserul dumneavoastră: deschideți site-ul dumneavoastră, apăsați F12 (sau alegeți Inspectare), mergeți la fila Rețea (Network), reîncărcați pagina și faceți clic pe prima cerere. Sub Antete de răspuns (Response Headers) vedeți tot ce trimite serverul dumneavoastră.
- Linia de comandă:
curl -sI https://domeniuldvs.nl/afișează headerele.
Verificați după fiecare modificare dacă site-ul, formularele și pagina de plată funcționează în continuare. Mențineți, de asemenea, CMS-ul, pluginurile și temele dumneavoastră actualizate. Vedeți Securizarea wp-login.php din WordPress.
Lectură suplimentară
- MDN: Strict-Transport-Security (în limba engleză)
- MDN: Content-Security-Policy (în limba engleză)
- MDN: Permissions-Policy (în limba engleză)
- Lista de preîncărcare HSTS (în limba engleză)
