HSTS és biztonsági fejlécek az Ön weboldalához
Minden oldalnál a webszerver fejléceket (header) 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 az Ön oldalát. Itt olvashatja, mi az a HSTS, milyen egyéb biztonsági fejlécek léteznek, és hogyan állíthatók be és tesztelhetők.
Először is az oldalnak 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 a problémák megoldása és A látogatók kötelező átirányítása https-re.
Mit csinál a HSTS?
A https-re irányításnak van egy gyenge pontja: az első kérés http-n keresztül még titkosítatlanul megy. Valaki, aki ugyanazon a hálózaton van, például nyilvános wifin, elfoghatja ezt a kérést. A HSTS (HTTP Strict Transport Security) ezt oldja meg. Az oldal https-en keresztül a következő fejlécet küldi:
Strict-Transport-Security: max-age=31536000
A böngésző ekkor megjegyzi, hogy az oldalt 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 elindulna a hálózaton keresztül. Egy HSTS-fejlécet, amely egyszerű http-n keresztül érkezik, a böngésző figyelmen kívül hagyja.
| Elem | Jelentés |
|---|---|
max-age | Mennyi ideig jegyzi meg a böngésző, másodpercben. Az internet.nl tesztje legalább egy évet (31536000) tekint elegendőnek. |
includeSubDomains | Minden aldomainre is vonatkozik, például shop.ondomainje.nl és mail.ondomainje.nl. |
preload | Ezzel kérheti a felvételt a böngészőkbe beépített listára (hstspreload.org). Ekkor már a legelső látogatás is védett. Ehhez többek között egy évnyi beállítás, az includeSubDomains és a https minden aldomainen szükséges. A listáról való eltávolítás hosszú ideig tart. |
max-age=0 | Törli a megjegyzett utasítást a következő https-en keresztüli látogatáskor. |
includeSubDomains beállítással 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 egy rövid max-age értékkel, például egy nappal (86400), ellenőrizze, hogy minden működik, majd fokozatosan emelje egy évig.HSTS a WebOké-nél
A legtöbb szerverünkön a webszerver alapértelmezés szerint HSTS-t küld minden olyan weboldalhoz, amelyet https-en keresztül nyitnak meg: Strict-Transport-Security: max-age=31536000. Ez egy év, includeSubDomains és preload nélkül. Ehhez nem kell semmit tennie. Néhány szerveren ez alapértelmezetten nincs bekapcsolva, ott saját maga kapcsolhatja be. Hogy az oldala már küldi-e a HSTS-t, és milyen max-age értékkel, megnézheti a böngésző fejlesztői eszközeiben vagy az internet.nl tesztjében (lásd lentebb).
A HSTS kapcsoló a DirectAdminban
A DirectAdminban navigáljon a Domains menüpontra, majd kattintson a domainnévre. Ha a Secure SSL Connection be van kapcsolva, a HSTS mellett látható a Enable HTTP Strict Transport Security kapcsoló. Ezután kattintson a Save gombra a mentéshez. A lépésenkénti leírást itt olvashatja: A látogatók mindig https-re irányítása.
Ha az oldala már küldi a HSTS-t, nincs szüksége a kapcsolóra. Csak akkor kapcsolja be, ha az oldala még nem küld HSTS-t. A HSTS-t egy helyen állítsa be: vagy a DirectAdminban, vagy a .htaccess fájlban, ne mindkettőben. Ha a böngésző két HSTS-fejlécet kap, csak az elsőt használja.
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, hogy milyen fájlról van szó, emiatt egy feltöltött "kép" scriptként futhat le. | nosniff (az egyetlen érvényes érték) |
Content-Security-Policy: frame-ancestors vagy X-Frame-Options | Clickjacking: egy másik oldal 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 | Amikor valaki egy másik oldalra kattint, 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 szigorúbban same-origin vagy no-referrer. Az internet.nl csak a szigorú értékeket tekinti megfelelőnek. |
Permissions-Policy | Meghatározza, hogy az oldal és a beágyazott keretek mely böngészőfunkciókat használhatják, például kamerát, mikrofont és helymeghatározást. | camera=(), microphone=(), geolocation=() kikapcsolja ezt a hármat. Ha az oldala használja ezek egyikét, hagyja el az adott részt. |
Content-Security-Policy (teljes) | Korlátozza, hogy honnan tölthetők be scriptek, stílusok és képek. Ez sokkal nehezebbé teszi a beszúrt kártékony scriptek (XSS) futtatását. | Egyedi beállítás oldalanként. Kerülje az unsafe-inline, unsafe-eval és a helyettesítő karakterek (wildcard) használatát. |
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 elejé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 az oldala még nem küld HSTS-t (lásd fentebb): # Header always set Strict-Transport-Security "max-age=31536000" </IfModule>
Az includeSubDomains beállítást csak akkor adja hozzá, ha biztos abban, hogy minden aldomain rendelkezik https-szel. Ha WordPress-t használ, a fejléceket beépülő modullal (plugin) is beállíthatja. Válasszon egy ismert, rendszeresen frissített beépülő modult, és minden fejlécet csak egy helyen állítson be: vagy a beépülő modulban, vagy a .htaccess fájlban.
Content-Security-Policy-Report-Only fejléccel. Ez semmit sem blokkol, de a böngésző konzolján megmutatja, mi lenne blokkolva. Kétség esetén bízza ezt a webfejlesztőjére, vagy kezdje csak a frame-ancestors beállítással.Tesztelés
- Internet.nl: adja meg a domainjét az internet.nl oldalon található weboldalteszthez.
- Böngésző: nyissa meg az oldalt, nyomja meg az F12 billentyűt (vagy válassza a Vizsgálat lehetőséget), lépjen a Hálózat (Network) fülre, töltse újra az oldalt, majd kattintson az első kérésre. A Válaszfejlécek (Response Headers) alatt látható minden, amit a szerver küld.
- Parancssor: a
curl -sI https://ondomainje.nl/parancs megjeleníti a fejléceket.
Minden módosítás után ellenőrizze, hogy az oldal, az űrlapok és a fizetési oldal továbbra is működnek-e. Emellett tartsa frissen a CMS-t, a beépülő modulokat és a sablonokat. Lásd: A WordPress wp-login.php fájljának biztonságossá tétele.
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)
