HSTS és biztonsági fejlécek az Ön weboldalához
Minden egyes oldalnál a webszerver fejléceket (headers) küld: rövid sorokat, amelyek utasításokat tartalmaznak a böngésző számára. Ezek részben meghatározzák, hogy a böngésző mennyire biztonságosan kezeli a weboldalt. Itt olvashatja, mi a HSTS, milyen egyéb biztonsági fejlécek léteznek, és hogyan állíthatja be és tesztelheti ezeket.
Először is a weboldalnak működő tanúsítvánnyal kell rendelkeznie, és a látogatókat https-re kell irányítania. Erről bővebben itt olvashat: SSL-tanúsítvány aktiválása, megújítása és hibaelhárítása és Látogatók kötelező átirányítása https-re.
Mire szolgál a HSTS?
A https-re való átirányításnak van egy gyenge pontja: az első kérés http-n keresztül még titkosítatlanul megy át. Valaki ugyanazon a hálózaton, például nyilvános wifin, elfoghatja ezt a kérést. A HSTS (HTTP Strict Transport Security) ezt oldja meg. A weboldal https-en keresztül a következő fejlécet küldi:
Strict-Transport-Security: max-age=31536000
A böngésző ezután megjegyzi, hogy a weboldalt csak https-en keresztül nyithatja meg. Ha egy látogató később http://-t ír be, a böngésző automatikusan https-re alakítja, még mielőtt bármi is átmenne a hálózaton. Egy olyan HSTS-fejlécet, amely sima http-n keresztül érkezik, a böngésző figyelmen kívül hagyja.
| Elem | Jelentés |
|---|---|
max-age | Mennyi ideig jegyzi meg ezt a böngésző, másodpercben. Az internet.nl tesztje legalább egy évet (31536000) számít elegendőnek. |
includeSubDomains | Minden aldomainre is érvényes, például shop.jouwdomein.nl és mail.jouwdomein.nl esetén. |
preload | Ezzel kérheti a felvételt a böngészőkbe beépített listára (hstspreload.org). Így még az egészen első látogatás is védett. Ehhez többek között egy év, az includeSubDomains és minden aldomainen https szükséges. A listáról való eltávolítás sokáig tart. |
max-age=0 | Törli a megjegyzett utasítást a következő https-en keresztüli látogatáskor. |
includeSubDomains esetén ez minden aldomainre is vonatkozik, például egy régi kamera- vagy nyomtatóoldalra tanúsítvány nélkül. Ezért építse fel fokozatosan: kezdje rövid max-age értékkel, például egy nappal (86400), ellenőrizze, hogy minden működik, majd lépésenként emelje egy évre.A HSTS-kapcsoló a DirectAdminben
A DirectAdminben lépjen a Domainek menüpontra, majd kattintson a domainnévre. Ha a Biztonságos SSL kapcsolat be van kapcsolva, a HSTS résznél megjelenik a HTTP Strict Transport Security engedélyezése kapcsoló. Ezután kattintson a Mentés gombra a mentéshez. A lépésenkénti leírást itt olvashatja: Látogatók mindig https-re irányítása.
Ha szeretné megtudni, milyen max-age értéket küld a weboldala, nézze meg a böngésző fejlesztői eszközeiben vagy az internet.nl tesztjében (lásd lentebb). A HSTS-t csak egy helyen állítsa be: vagy a DirectAdminben, vagy a .htaccess fájlban, ne mindkettőben. Ha a böngésző két HSTS-fejlécet kap, csak az elsőt veszi figyelembe.
A többi biztonsági fejléc
| Fejléc | Mi ellen véd | Kezdő érték |
|---|---|---|
X-Content-Type-Options | A böngésző maga próbálja kitalálni, mi egy fájl, aminek következtében egy feltöltött "kép" szkriptként futtatható. | nosniff (az egyetlen érvényes érték) |
Content-Security-Policy: frame-ancestors vagy X-Frame-Options | Clickjacking: egy másik weboldal láthatatlanul betölti az Ön oldalát egy keretben (frame), így a látogatók észrevétlenül az Ön gombjaira kattintanak. | frame-ancestors 'self', vagy a régebbi X-Frame-Options: SAMEORIGIN fejléc |
Referrer-Policy | Egy másik oldalra való kattintáskor a böngésző elküldi az előző oldal címét, néha egy keresőkifejezéssel vagy rendelésszámmal együtt. | strict-origin-when-cross-origin, vagy a szigorúbb same-origin vagy no-referrer. Az internet.nl csak a szigorú értékeket fogadja el jónak. |
Permissions-Policy | Meghatározza, hogy az oldal és a beágyazott keretek mely böngészőfunkciókat használhatják, például a kamerát, mikrofont és helymeghatározást. | camera=(), microphone=(), geolocation=() kikapcsolja ezt a hármat. Ha a weboldal ezen funkciók valamelyikét használja, hagyja ki. |
Content-Security-Policy (teljes) | Korlátozza, honnan tölthetők be szkriptek, stílusok és képek. Ez sokkal nehezebbé teszi a beillesztett rosszindulatú szkripteket (XSS). | Weboldalanként egyedi beállítás szükséges. Kerülje az unsafe-inline, unsafe-eval értékeket és a helyettesítő karaktereket (wildcard). |
Beállítás a .htaccess fájlban
Illessze be ezeket a sorokat a domain public_html mappájában található .htaccess fájl tetejére. Először készítsen másolatot a fájlról.
<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=()" # Csak akkor, ha a HSTS-kapcsoló a DirectAdminben ki van kapcsolva: # Header always set Strict-Transport-Security "max-age=31536000" </IfModule>
Az includeSubDomains opciót csak akkor adja hozzá, ha biztos benne, hogy minden aldomain rendelkezik https-sel. Ha WordPresst használ, a fejléceket egy bővítménnyel is beállíthatja. Válasszon ismert, rendszeresen frissített bővítményt, és minden fejlécet csak egy helyen állítson be: vagy a bővítményben, vagy a .htaccess fájlban.
Content-Security-Policy-Report-Only fejléccel. Ez semmit sem blokkol, de a böngésző konzoljában megmutatja, mi lenne blokkolva. Kétség esetén bízza ezt a weboldalkészítőre, vagy kezdje csak a frame-ancestors beállítással.Tesztelés
- Internet.nl: adja meg a domainjét az internet.nl oldalán elérhető weboldalteszthez.
- Böngésző: nyissa meg a weboldalt, nyomja meg az F12 billentyűt (vagy válassza a Vizsgálat lehetőséget), menjen a Hálózat (Network) fülre, töltse be újra az oldalt, majd kattintson az első kérésre. A Válaszfejlécek (Response Headers) alatt láthatja mindazt, amit a szerver elküld.
- Parancssor: a
curl -sI https://jouwdomein.nl/parancs megjeleníti a fejléceket.
Minden módosítás után ellenőrizze, hogy a weboldal, az űrlapok és a fizetési oldal továbbra is működnek-e. Emellett tartsa naprakészen a tartalomkezelő rendszert (CMS), a bővítményeket és a sablonokat. Lásd: A WordPress wp-login.php fájljának védelme.
További olvasnivaló
- MDN: Strict-Transport-Security (angol nyelven)
- MDN: Content-Security-Policy (angol nyelven)
- MDN: Permissions-Policy (angol nyelven)
- HSTS-preload lista (angol nyelven)
