Datahorses

HTTP-tietoturvaotsakkeet, jotka jokaisen yrityssivuston pitäisi lähettää

Kirjoittaja · · 3 min lukuaika

HTTP-tietoturvaotsakkeet ovat ohjeita, jotka verkkopalvelimenne lähettää jokaisen sivun mukana. Ne kertovat selaimelle, miten sivustoanne käsitellään: käytä aina HTTPS:ää, älä anna muiden sivustojen upottaa tätä sivua kehykseen, älä arvaa tiedostotyyppejä, lataa skriptejä vain luotetuista lähteistä. Ne eivät hidasta sivustoa, ja ne asetetaan kerran palvelimen tai CDN:n asetuksissa.

Lyhyt vastaus useimmille yrityssivustoille: lähettäkää Strict-Transport-Security, Content-Security-Policy (vähintään frame-ancestors-direktiivillä), X-Content-Type-Options, Referrer-Policy ja Permissions-Policy, asettakaa evästeille oikeat liput ja poistakaa otsakkeet, jotka paljastavat ohjelmistoversionne. Alla suositellut arvot noudattavat OWASP HTTP Headers Cheat Sheetiä ja MDN:ää.

Puuttuvat otsakkeet ovat harvoin yksinään hätätilanne. Ne kertovat, kuinka huolellisesti sivusto on määritetty, ja ne sulkevat pois kokonaisia selaimen puolella tapahtuvien hyökkäysten luokkia.

Miten tarkistatte otsakkeenne

Pyytäkää palvelimelta etusivunne otsakkeet:

curl -sI https://yourcompany.com/

Tarkistakaa jokainen palvelinnimi, ei vain pääverkkotunnusta: verkkokauppa, kirjautuminen, asiakasportaali ja kaikki vanhat testipalvelimet, jotka yhä vastaavat. Sovelluksessa asetetut otsakkeet katoavat usein virhesivuilta, uudelleenohjauksista ja staattisista tiedostoista, joten testatkaa muutamaa eri osoitetta.

Lähettämisen arvoiset otsakkeet

Strict-Transport-Security (HSTS)

Käskee selainta käyttämään verkkotunnuksellenne vain HTTPS:ää määrätyn ajan, jotta kävijää ei voi huomaamatta pudottaa HTTP-yhteyteen.

Strict-Transport-Security: max-age=63072000; includeSubDomains

max-age ilmoitetaan sekunteina. Lisätkää includeSubDomains vain, jos jokainen aliverkkotunnus toimii HTTPS:llä. Selainten preload-listoille pääsy edellyttää hstspreload.org-palvelun mukaan, että max-age on vähintään 31536000 (1 vuosi) ja mukana ovat includeSubDomains ja preload. Preload-listalta poistuminen on hankalaa, joten lisätkää preload viimeisenä.

Content-Security-Policy (CSP)

Luettelee lähteet, joista sivu saa ladata skriptejä, tyylejä, kuvia ja kehyksiä. Hyvin laadittu CSP on selaimen puolella vahvin suoja sivustojen välistä komentosarjahyökkäystä (XSS) vastaan, mutta se on sovitettava sivustoonne. Aloittakaa raportointitilassa otsakkeella Content-Security-Policy-Report-Only, seuratkaa, mitä estettäisiin, ja ottakaa käytäntö sitten käyttöön estävänä.

Jo ennen täyttä käytäntöä yksi direktiivi on helppo ja hyödyllinen:

Content-Security-Policy: frame-ancestors 'self'

frame-ancestors määrää, mitkä sivustot saavat upottaa sivujanne, mikä estää clickjacking-hyökkäykset. Se on lähetettävä otsakkeena, <meta>-tagissa se ei toimi.

X-Frame-Options

Vanhempi tapa estää kehystäminen. OWASP suosittelee frame-ancestors-direktiiviä aina, kun mahdollista, ja X-Frame-Options: DENY (tai SAMEORIGIN) varakeinona vanhemmille selaimille.

X-Content-Type-Options

X-Content-Type-Options: nosniff

Estää selainta arvaamasta tiedoston tyyppiä, jotta ladattua tiedostoa ei voi suorittaa skriptinä. Varmistakaa, että Content-Type-otsakkeet ovat oikein koko sivustolla.

Referrer-Policy

Referrer-Policy: strict-origin-when-cross-origin

Rajoittaa, kuinka paljon osoitteistanne välittyy muille sivustoille, kun kävijät klikkaavat linkkejä. Tällä on merkitystä, kun osoitteissa on tilausnumeroita, tunnisteita tai hakusanoja.

Permissions-Policy

Permissions-Policy: geolocation=(), camera=(), microphone=()

Kytkee pois selaimen ominaisuudet, joita sivustonne ei käytä, jotta sivulle ujutettu skripti ei voi pyytää niitä.

Myös evästeet tarvitsevat lippuja

Istuntoevästeet tulee asettaa lipuilla Secure (vain HTTPS), HttpOnly (ei luettavissa JavaScriptillä) ja SameSite=Lax tai Strict:

Set-Cookie: session=...; Secure; HttpOnly; SameSite=Lax; Path=/

Tarkistakaa myös evästeen Domain. Evästeen, jonka Domain-arvo on .yourcompany.com, voi lukea jokainen aliverkkotunnus, millä on merkitystä, jos jokin niistä joskus kaapataan orvoksi jääneen DNS-tietueen kautta.

Otsakkeet, jotka kannattaa poistaa tai jättää pois

  • Server ja X-Powered-By versionumeroineen, esimerkiksi Apache/2.4.41 tai PHP/7.4.3. Ne kertovat kenelle tahansa tarkalleen, mitä ohjelmistoa ja versiota kannattaa tutkia. OWASP suosittelee poistamaan X-Powered-By-otsakkeen ja karsimaan Server-otsakkeen sisällön mahdollisimman niukaksi.
  • X-XSS-Protection. MDN merkitsee sen vanhentuneeksi ja epästandardiksi ja huomauttaa, että se voi aiheuttaa ongelmia muuten turvallisilla sivustoilla. OWASP suosittelee jättämään sen asettamatta tai asettamaan X-XSS-Protection: 0 ja nojaamaan CSP:hen.
  • Expect-CT. OWASP neuvoo olemaan käyttämättä sitä ja poistamaan sen nykyisistä määrityksistä.

Mihin otsakkeet asetetaan

Asettakaa otsakkeet yhteen paikkaan, joka kattaa jokaisen vastauksen: verkkopalvelimeen (nginx add_header ... always;, Apache Header always set), CDN:ään tai hosting-alustan otsakeasetuksiin. Nginxin avainsanalla always on merkitystä: ilman sitä otsakkeet lisätään vain onnistuneisiin vastauksiin ja uudelleenohjauksiin, ei virhesivuille.

Lyhyt tarkistuslista

  • Ajakaa curl -sI jokaiselle omistamallenne palvelinnimelle.
  • Lisätkää HSTS, X-Content-Type-Options, Referrer-Policy, Permissions-Policy ja frame-ancestors.
  • Ottakaa täysi CSP käyttöön ensin raportointitilassa.
  • Asettakaa istuntoevästeille Secure, HttpOnly ja SameSite.
  • Poistakaa versionumerot otsakkeista Server ja X-Powered-By sekä luopukaa otsakkeista X-XSS-Protection ja Expect-CT.
  • Tarkistakaa uudelleen jokaisen palvelin-, CDN- tai alustamuutoksen jälkeen.

Kun palvelimen asetukset ovat muutenkin työn alla, varmistakaa samalla, ettei se tarjoa avoimia .env-, .git- tai varmuuskopiotiedostoja.

Datahorsesin rooli

Datahorses valvoo verkkosivustojanne ulkopuolelta joka päivä ja tarkistaa, mitä selaimet ja hyökkääjät saavat: puuttuvat tietoturvaotsakkeet, evästeet ilman lippuja Secure, HttpOnly tai SameSite, palvelimet, jotka paljastavat versionsa, sekä HTTP-sisällön HTTPS-sivuilla. Emme mene järjestelmiinne emmekä tarvitse pääsyoikeuksia, ja jokaiseen havaintoon kuuluu kehittäjällenne tarkka kuvaus tarvittavasta asetusmuutoksesta. Katsokaa koko luettelo siitä, mitä valvomme, tai pyytäkää tarjous.

Lisää artikkeleita

Kaikki artikkelit