Zaglavlja HSTS i sigurnosna zaglavlja za Vašu web stranicu
Kod svake stranice Vaš web poslužitelj šalje headere: kratke retke s uputama za preglednik. Oni dijelom određuju koliko sigurno preglednik postupa s Vašom stranicom. Ovdje saznajte što je HSTS, koja su druga sigurnosna zaglavlja dostupna te kako ih postaviti i testirati.
Prvo Vaša stranica mora imati ispravan certifikat i preusmjeravati posjetitelje na https. O tome čitajte u člancima Aktiviranje, obnavljanje i rješavanje problema sa SSL certifikatom i Obvezno preusmjeravanje posjetitelja na https.
Što radi HSTS?
Preusmjeravanje na https ima jedan slab trenutak: prvi zahtjev putem http i dalje je nešifriran. Netko na istoj mreži, primjerice na javnom wifiju, taj zahtjev može presresti. HSTS (HTTP Strict Transport Security) rješava taj problem. Vaša stranica putem https šalje ovo zaglavlje:
Strict-Transport-Security: max-age=31536000
Preglednik tada pamti da Vašu stranicu smije otvarati isključivo putem https. Ako posjetitelj kasnije upiše http://, preglednik to sam pretvara u https, i to prije nego što bilo što ode preko mreže. HSTS zaglavlje koje stigne putem običnog http preglednik zanemaruje.
| Dio | Značenje |
|---|---|
max-age | Koliko dugo preglednik to pamti, u sekundama. Test internet.nl smatra barem godinu dana (31536000) dovoljnim. |
includeSubDomains | Vrijedi i za sve poddomene, poput shop.vašadomena.nl i mail.vašadomena.nl. |
preload | Tražite uvrštavanje na popis koji je ugrađen u preglednike (hstspreload.org). Time je zaštićen čak i prvi posjet. Za to su potrebni, između ostalog, godina dana, includeSubDomains te https na svim poddomenama. Uklanjanje s popisa traje dugo. |
max-age=0 | Briše zapamćenu uputu kod sljedećeg posjeta putem https. |
includeSubDomains to vrijedi i za svaku poddomenu, primjerice staru stranicu kamere ili pisača bez certifikata. Zato gradite postupno: počnite s kratkim max-age, primjerice jedan dan (86400), provjerite radi li sve ispravno i u koracima povećavajte do godinu dana.Prekidač za HSTS u DirectAdmin
U DirectAdmin odaberite Domains i kliknite na naziv Vaše domene. Ako je uključeno Secure SSL, kod HSTS-a vidjet ćete prekidač Enable HTTP Strict Transport Security. Zatim kliknite na Save kako biste spremili postavke. Kako to izgleda korak po korak, pročitajte u članku Uvijek preusmjerite posjetitelje na https.
Želite li znati koji max-age Vaša stranica šalje, pogledajte u razvojnim alatima Vašeg preglednika ili u testu na internet.nl (vidi dolje). HSTS postavite na jednom mjestu: u DirectAdmin ili u .htaccess, nikad na oba mjesta. Ako preglednik primi dva HSTS zaglavlja, koristit će samo prvo.
Ostala sigurnosna zaglavlja
| Zaglavlje | Protiv čega | Vrijednost za početak |
|---|---|---|
X-Content-Type-Options | Preglednik sam pogađa vrstu datoteke, zbog čega se učitana "slika" može izvršiti kao skripta. | nosniff (jedina ispravna vrijednost) |
Content-Security-Policy: frame-ancestors ili X-Frame-Options | Clickjacking: druga stranica nevidljivo učitava Vašu stranicu u okviru (frame), tako da posjetitelji nesvjesno kliknu na Vaše gumbe. | frame-ancestors 'self', ili starije zaglavlje X-Frame-Options: SAMEORIGIN |
Referrer-Policy | Kod klika na drugu stranicu preglednik šalje adresu prethodne stranice, ponekad uključujući pojam pretrage ili broj narudžbe. | strict-origin-when-cross-origin, ili strože same-origin ili no-referrer. Internet.nl kao ispravne priznaje samo strože vrijednosti. |
Permissions-Policy | Određuje koje funkcije preglednika Vaša stranica i ugrađeni okviri smiju koristiti, poput kamere, mikrofona i lokacije. | camera=(), microphone=(), geolocation=() isključuje ta tri. Ako Vaša stranica koristi jednu od tih funkcija, izostavite je. |
Content-Security-Policy (potpuna) | Ograničava s kojih mjesta se smiju učitavati skripte, stilovi i slike. Time je ubacivanje zlonamjernih skripti (XSS) znatno otežano. | Prilagođeno svakoj stranici posebno. Izbjegavajte unsafe-inline, unsafe-eval i wildcard znakove. |
Postavljanje u .htaccess
Postavite ove retke na vrh datoteke .htaccess u mapi public_html Vaše domene. Prvo napravite kopiju datoteke.
<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=()" # Samo ako je prekidač za HSTS u DirectAdmin isključen: # Header always set Strict-Transport-Security "max-age=31536000" </IfModule>
includeSubDomains dodajte tek kada ste sigurni da svaka poddomena ima https. Ako koristite WordPress, zaglavlja možete postaviti i putem dodatka (plugina). Odaberite poznati dodatak koji se i dalje redovito ažurira, i svako zaglavlje postavite na jednom mjestu: u dodatku ili u .htaccess.
Content-Security-Policy-Report-Only. Ono ništa ne blokira, ali u konzoli preglednika prikazuje što bi bilo blokirano. Kod sumnje ovo prepustite svom web developeru, ili počnite samo s frame-ancestors.Testiranje
- Internet.nl: unesite svoju domenu u test stranice na internet.nl.
- Vaš preglednik: otvorite svoju stranicu, pritisnite F12 (ili odaberite Inspect), idite na karticu Network, ponovno učitajte stranicu i kliknite na prvi zahtjev. Pod Response Headers vidjet ćete sve što Vaš poslužitelj šalje.
- Naredbeni redak:
curl -sI https://vašadomena.nl/prikazuje zaglavlja.
Nakon svake promjene provjerite rade li Vaša stranica, obrasci i stranica za plaćanje i dalje ispravno. Osim toga, redovito ažurirajte svoj CMS, dodatke i teme. Pogledajte Zaštita wp-login.php datoteke u WordPressu.
Dodatno štivo
- MDN: Strict-Transport-Security (engleski)
- MDN: Content-Security-Policy (engleski)
- MDN: Permissions-Policy (engleski)
- HSTS lista za preload (engleski)
