Verkkosivujen turvallisuus ja HTTP-otsakkeet
Tässä kirjoituksessa käyn läpi, miten voit parantaa verkkosivujen tietoturvaa laittamalla palvelimen HTTP-otsakkeet (HTTP Headers) kuntoon. HTTP-otsakkeiden muokkaaminen tulisi tehdä palvelintasolla, ja moderneja webhotellipalveluita tarjoavan yrityksen tulisi hoitaa nämä sinulle pyytämättä. Asetuksia voi myös muokata WordPress-lisäosilla, mikäli palvelintasolle ei ole suoraa pääsyä.
Mozilla tarjoaa ilmaisen ja tehokkaan työkalun, jolla voit testata ennen ja jälkeen asetusten laiton, miten sivustosi turvallisuus parani. Testaa sivustosi tästä: Mozilla Observatory.
1. Content Security Policy (CSP)
Content Security Policy on kenties tärkein yksittäinen HTTP-otsake. Se auttaa sinua torjumaan ns. Cross Site Scripting (XSS) -hyökkäyksiä, joilla pyritään syöttämään haitallista koodia verkkosivuillesi. Hyökkäystä yritetään käyttää mm. sivuilla, joissa on kirjautumismahdollisuus. Onnistuneen hyökkäyksen jälkeen hakkeri voi saada käsiinsä sisäänkirjautuvien henkilöiden tunnukset.
Content Security Policy -otsake estää oletuksena liikenteen ulkopuolisilta palvelimilta. On siis tärkeää, että määrittelet säännöissä tarkasti, mitkä ulkoiset lähteet (kuten Google Analytics) ovat sallittuja.
Esimerkki CSP-asetuksesta NGINX- tai Apache-verkkopalvelimen asetuksissa:
content-security-policy: script-src 'self' https://www.google-analytics.com
2. HTTP Strict Transport Security (HSTS)
Vaikka verkkosivuilla olisi käytössä HTTPS-alkuinen osoite ja SSL-sertifikaatti, se ei automaattisesti tarkoita täydellistä turvaa. On tärkeää tarkistaa HTTP-otsakkeet, jotta yhteys pysyy salattuna alusta loppuun. HTTP Strict Transport Security eli HSTS-asetus pakottaa kaiken verkkosivun liikenteen kulkemaan suojatun HTTPS-yhteyden läpi.
HSTS-otsakkeen avulla varmistat, etteivät asiakkaasi vahingossakaan tee esimerkiksi verkkokauppaostoksia epäturvallisen yhteyden läpi.
Esimerkki HSTS-asetuksesta:
strict-transport-security: max-age=31536000; includeSubDomains; preload
3. X-Frame-Options
Clickjacking on tekniikka, jolla saadaan netinkäyttäjä luovuttamaan tietojaan samalla kun he selaavat turvallisen oloisia verkkosivuja. Hyökkäyksessä käytetään usein iFrame-elementtejä sivuston "kaappaamiseen".
Vaikka moderni tapa estää tämä on käyttää kohdassa 1 mainittua CSP-otsaketta (`frame-ancestors`-direktiiviä), on X-Frame-Options edelleen hyödyllinen lisä vanhempien selaimien turvaamiseksi.
Ota käyttöön Nginx-verkkopalvelimella:
add_header x-frame-options "SAMEORIGIN" always;
Ota käyttöön Apache-verkkopalvelimella:
header always set x-frame-options "SAMEORIGIN"
4. X-XSS-Protection (Vanhentunut)
Aiemmin suositeltu X-XSS-Protection on nykyään vanhentunut otsake. Useat modernit selaimet (kuten Chrome ja Edge) eivät enää käytä sitä oletuksena, ja väärin konfiguroituna se saattaa jopa aiheuttaa haavoittuvuuksia. Nykyään suositellaan, että XSS-suojaus hoidetaan ensisijaisesti vahvalla Content Security Policy (CSP) -otsakkeella (katso kohta 1).
Jos haluat poistaa tämän käytöstä tai varmistaa yhteensopivuuden turvallisesti, voit käyttää arvoa "0":
add_header x-xss-protection "0" always;
5. X-Content-Type-Options
MIME Sniffing on hyökkäys, jolla voidaan pahimmassa tapauksessa ladata haitallista sisältöä verkkosivuille hyödyntämällä selaimen tapaa arvata tiedostotyyppejä. X-Content-Type-Options -otsake estää selaimia tekemästä MIME Sniffingiä ja pakottaa ne noudattamaan palvelimen ilmoittamaa tiedostotyyppiä.
Ota käyttöön Nginx-verkkopalvelimella:
add_header X-Content-Type-Options "nosniff" always;
Ota käyttöön Apache-verkkopalvelimella:
Header always set X-Content-Type-Options "nosniff"
Kotisivujen tietoturva yleisesti
Verkkosivujen turvallisuus on jokaisen ylläpitäjän vastuulla. Hyvän tietoturvatason saavuttaminen voi tuntua haastavalta, mutta oikeat HTTP-otsakkeet ovat helppo ja tehokas tapa aloittaa. Kun palvelin on konfiguroitu oikein, koko sivuston tietoturva paranee merkittävästi. Jos käytät jaettua webhotellia, varmista palveluntarjoajaltasi, että he tukevat näiden otsakkeiden muokkaamista.