HSTS in varnostne glave za Vaše spletno mesto
Pri vsaki strani Vaš spletni strežnik pošlje glave (headers): kratke vrstice z navodili za brskalnik. Te deloma določajo, kako varno brskalnik ravna z Vašim spletnim mestom. Tukaj lahko preberete, kaj je HSTS, katere druge varnostne glave obstajajo ter kako jih nastavite in testirate.
Najprej mora imeti Vaše spletno mesto delujoče potrdilo in obiskovalce preusmerjati na https. To lahko preberete v člankih Aktiviranje, obnavljanje SSL potrdila in odpravljanje težav in Obvezna preusmeritev obiskovalcev na https.
Kaj počne HSTS?
Preusmeritev na https ima en šibki trenutek: prva zahteva prek http je še vedno nešifrirana. Nekdo v istem omrežju, na primer v javnem omrežju wifi, lahko to zahtevo prestreže. HSTS (HTTP Strict Transport Security) to reši. Vaše spletno mesto prek https pošlje naslednjo glavo:
Strict-Transport-Security: max-age=31536000
Brskalnik si nato zapomni, da lahko Vaše spletno mesto odpre samo prek https. Če obiskovalec kasneje vtipka http://, brskalnik to sam spremeni v https, še preden gre karkoli prek omrežja. Glavo HSTS, ki prispe prek navadnega http, brskalnik prezre.
| Del | Pomen |
|---|---|
max-age | Koliko časa si brskalnik to zapomni, v sekundah. Test internet.nl šteje vsaj eno leto (31536000) za zadostno. |
includeSubDomains | Velja tudi za vse poddomene, na primer shop.jouwdomein.nl in mail.jouwdomein.nl. |
preload | Zaprosite za vključitev na seznam, ki je vgrajen v brskalnike (hstspreload.org). Tako je zaščiten tudi prav prvi obisk. Za to so med drugim potrebni eno leto, includeSubDomains in https na vseh poddomenah. Odstranitev s seznama traja dolgo. |
max-age=0 | Ob naslednjem obisku prek https izbriše zapomnjeno navodilo. |
includeSubDomains to velja tudi za vsako poddomeno, na primer staro stran kamere ali tiskalnika brez potrdila. Zato gradite postopoma: začnite s kratkim max-age, na primer enim dnevom (86400), preverite, ali vse deluje, in ga postopoma povečujte do enega leta.Stikalo HSTS v DirectAdmin
V DirectAdmin pojdite na Domains in kliknite na ime Vaše domene. Če je možnost Secure SSL Connection vklopljena, boste pri HSTS videli stikalo Enable HTTP Strict Transport Security. Nato kliknite Save, da shranite nastavitve. Kako to poteka korak za korakom, preberete v članku Vedno preusmerite obiskovalce na https.
Če želite vedeti, kateri max-age pošilja Vaše spletno mesto, poglejte v razvijalska orodja Vašega brskalnika ali v test internet.nl (glejte spodaj). HSTS nastavite samo na enem mestu: v DirectAdmin ali v .htaccess, ne na obeh. Če brskalnik prejme dve glavi HSTS, uporabi samo prvo.
Druge varnostne glave
| Glava | Pred čim ščiti | Začetna vrednost |
|---|---|---|
X-Content-Type-Options | Brskalnik sam ugiba, kakšna je datoteka, zaradi česar se lahko naložena "slika" izvede kot skript. | nosniff (edina veljavna vrednost) |
Content-Security-Policy: frame-ancestors ali X-Frame-Options | Prevzem klikov (clickjacking): druga stran nevidno naloži Vašo stran v okvir, tako da obiskovalci nevede kliknejo na Vaše gumbe. | frame-ancestors 'self', ali starejša glava X-Frame-Options: SAMEORIGIN |
Referrer-Policy | Ob kliku na drugo stran brskalnik posreduje naslov prejšnje strani, včasih vključno z iskalnim izrazom ali številko naročila. | strict-origin-when-cross-origin, ali strožje same-origin ali no-referrer. Internet.nl kot ustrezne šteje samo strožje vrednosti. |
Permissions-Policy | Določa, katere funkcije brskalnika lahko Vaša stran in vdelani okvirji uporabljajo, na primer kamero, mikrofon in lokacijo. | camera=(), microphone=(), geolocation=() izklopi te tri funkcije. Če Vaše spletno mesto uporablja katero od njih, jo izpustite. |
Content-Security-Policy (popolna) | Omejuje, od kod se smejo nalagati skripti, slogi in slike. To precej oteži vrivanje zlonamernih skriptov (XSS). | Prilagojeno za vsako spletno mesto posebej. Izogibajte se unsafe-inline, unsafe-eval in nadomestnim znakom (wildcards). |
Nastavitev v .htaccess
Te vrstice postavite na vrh datoteke .htaccess v mapi public_html Vaše domene. Najprej naredite kopijo 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 če je stikalo HSTS v DirectAdmin izklopljeno: # Header always set Strict-Transport-Security "max-age=31536000" </IfModule>
Dodajte includeSubDomains šele, ko ste prepričani, da ima vsaka poddomena https. Če uporabljate WordPress, lahko glave nastavite tudi s pomočjo vtičnika. Izberite znan vtičnik, ki se še posodablja, in vsako glavo nastavite samo na enem mestu: v vtičniku ali v .htaccess.
Content-Security-Policy-Report-Only. Ta ničesar ne blokira, vendar v konzoli brskalnika prikaže, kaj bi bilo blokirano. Če ste v dvomih, to prepustite svojemu spletnemu razvijalcu, ali pa začnite samo s frame-ancestors.Testiranje
- Internet.nl: vnesite svojo domeno v test spletnega mesta na internet.nl.
- Vaš brskalnik: odprite svoje spletno mesto, pritisnite F12 (ali izberite Preuči), pojdite na zavihek Omrežje, ponovno naložite stran in kliknite na prvo zahtevo. Pod Glave odgovora (Response Headers) vidite vse, kar pošlje Vaš strežnik.
- Ukazna vrstica:
curl -sI https://jouwdomein.nl/prikaže glave.
Po vsaki spremembi preverite, ali Vaše spletno mesto, obrazci in stran za plačilo še vedno delujejo. Poleg tega poskrbite, da so Vaš CMS, vtičniki in teme posodobljeni. Glejte Zaščita datoteke wp-login.php v WordPress.
Dodatno branje
- MDN: Strict-Transport-Security (v angleščini)
- MDN: Content-Security-Policy (v angleščini)
- MDN: Permissions-Policy (v angleščini)
- Seznam za prednalaganje HSTS (v angleščini)
