CSP-generaattori
Luo Content-Security-Policy-otsake, meta-tagi ja Report-Only-versio valmiilla pohjilla, nonce-arvoilla ja SHA-256-tiivisteillä sekä arvioi käytäntösi.
Aloita valmiista pohjasta
Googlen isännät ovat esimerkkejä Googlen CSP-ohjeista Google-tunnisteelle. Google muuttaa niitä aika ajoin: tarkista voimassa oleva dokumentaatio ja poista se, mitä et käytä.
<meta>-tagissa selaimet ohittavat direktiivit frame-ancestors, report-uri, report-to ja sandbox, eikä Report-Only ole tuettu. Sijoita tagi <head>-osan alkuun: se koskee vain sen jälkeen tulevaa sisältöä.
Käytännön tarkistus
Näissä tarkistuksissa ei löytynyt heikkouksia.
Arvioi olemassa oleva käytäntö
Näin luot käytännön
- Valitse lähtökohta kohdasta Aloita valmiista pohjasta: Tiukka (nonce + strict-dynamic), Lukittu staattinen sivusto, Tyypillinen verkkosivusto tai Tyypillinen + Google Analytics / Ads. Editori avautuu tyypillisen verkkosivuston pohjalla.
- Muokkaa Direktiivejä. Jokaiseen kenttään kirjoitetaan välilyönnillä erotetut lähteet; tyhjä kenttä jättää direktiivin pois.
- Pikalisäys liittää valittuun Direktiiviin avainsanan:
'self','none','unsafe-inline','strict-dynamic',https:,data:ja niin edelleen. Lisää nonce lisää satunnaisen 128-bittisen noncen. - Jos haluat sallia tietyn upotetun skriptin ilman
'unsafe-inline'-arvoa, liitä skripti (tai sen ympärillä oleva HTML) kohtaan Laske tiiviste upotetulle skriptille tai tyylille ja napsauta Laske SHA-256 ja lisää. - Valitse upgrade-insecure-requests, jos osa vanhoista osoitteista käyttää yhä
http://-yhteyttä, ja kirjoita halutessasi Raportin päätepisteen URL. - Kopioi HTTP-otsake, Report-Only-otsake (testaus ilman estoa) tai HTML--tagi. Käytännön tarkistus päivittyy kirjoittaessasi.
Jos haluat arvioida jo olemassa olevan käytännön, liitä se kohtaan Arvioi olemassa oleva käytäntö ja napsauta Arvioi käytäntö. Lataa editoriin kopioi käytännön editorin kenttiin.
Mitä Content Security Policy tekee
CSP kertoo selaimelle, mistä lähteistä sivu saa ladata skriptejä, tyylejä, kuvia, fontteja, kehyksiä ja yhteyksiä. Sen tärkein tehtävä on rajoittaa sivustojen välistä skriptausta (XSS): vaikka hyökkääjä onnistuisi lisäämään sivullesi koodia, hyvä käytäntö estää lisätyn skriptin suorittamisen. CSP hallitsee myös sitä, kuka saa upottaa sivusi kehykseen (frame-ancestors), minne lomakkeet voi lähettää (form-action) ja mihin <base> saa osoittaa (base-uri).
Haun direktiivit, kuten img-src ja font-src, palaavat default-src-arvoon, jos ne puuttuvat. Direktiiveillä base-uri, form-action ja frame-ancestors ei ole tällaista varaa, minkä vuoksi tarkistus vaatii ne erikseen.
Nonce, tiiviste ja strict-dynamic
Isäntien salliminen (script-src https://cdn.example.com) vaikuttaa turvalliselta, mutta se on usein kierrettävissä: suurilla verkkotunnuksilla on JSONP-päätepisteitä ja vanhoja kirjastoja, joita hyökkääjä voi käyttää hyväkseen. Selainten tietoturvatiimien suosittelema tapa on tiukka CSP: jokaisella luotetulla <script>-elementillä on palvelimen jokaiseen vastaukseen luoma nonce tai se sallitaan tiivisteellä, ja 'strict-dynamic' antaa näiden luotettujen skriptien ladata tarvitsemansa muut skriptit. Tällaisessa asetelmassa https: ja 'unsafe-inline' ovat enää varakeinoja hyvin vanhoille selaimille, ja nykyselaimet ohittavat ne.
Nonce toimii vain, jos se muuttuu jokaisessa vastauksessa eikä sitä voi arvata. Kohdan Lisää nonce lisäämä arvo on pelkkä esimerkki: palvelimesi tai kehyksesi on luotava oma. Tiiviste kattaa upotetun koodin tarkat tavut, joten skriptin uudelleenmuotoilu vaatii uuden tiivisteen.
Otsake, Report-Only ja meta-tagi
Lähetä käytäntö HTTP-vastauksen otsakkeena aina, kun se on mahdollista. Ota se ensin käyttöön muodossa Content-Security-Policy-Report-Only: selaimet raportoivat rikkomukset (konsoliin ja asettamaasi päätepisteeseen) mitään estämättä, joten voit korjata sivusi ennen käytännön pakottamista. Raporttiasetukset lisäävät report-uri-direktiivin vanhemmille selaimille sekä report-to-direktiivin ja Reporting-Endpoints-otsakkeen.
<meta http-equiv> -versio on kätevä staattisessa verkkopalvelussa, mutta selaimet ohittavat siinä direktiivit frame-ancestors, report-uri, report-to ja sandbox, eikä Report-Only-meta-tagia ole olemassa. Työkalu poistaa nämä direktiivit tagista ja kertoo siitä.
Usein kysytyt kysymykset
Onko 'unsafe-inline' style-src-direktiivissä ongelma?
Se on vähemmän vaarallinen kuin script-src-direktiivissä ja hyvin yleinen, koska monet kirjastot asettavat upotettuja tyylejä. Injektoitu CSS voi silti turmella sivun ulkoasun tai vuotaa tietoja, joten tarkistus listaa sen matalan vakavuuden löydöksenä.
Ovatko Google Analytics -isännät täydellinen lista?
Ne ovat esimerkkejä Googlen CSP-ohjeista Google-tunnisteelle. Google muuttaa niitä ajan mittaan, ja alueellisia verkkotunnuksia voidaan tarvita lisäksi. Tarkista voimassa oleva Googlen dokumentaatio ja poista se, mitä et käytä. Myös gtag.js:n upotettu koodinpätkä tarvitsee noncen tai tiivisteen.
Miksi käytäntöni estää omat upotetut skriptini?
Kun script-src on asetettu ilman 'unsafe-inline'-arvoa, jokainen upotettu <script> ja onclick=-attribuutti estetään. Siirrä koodi tiedostoon tai lisää nonce tai tiiviste.
Korvaako CSP syötteen käsittelyn?
Ei. CSP on toinen puolustuslinja. Jatka tulosteen koodausta ja syötteen validointia: käytäntö rajoittaa vahinkoa, jos jotain pääsee läpi.
Voiko käytäntöjä olla useita?
Voi: jos sivu saa useita CSP-otsakkeita, resurssin on täytettävä ne kaikki. Liitä arviointiin yksi käytäntö kerrallaan.
Lähetetäänkö käytäntöni palvelimelle?
Ei. Työkalu toimii selaimessasi, eikä mitään kirjoittamaasi, liittämääsi tai laskemaasi tiivistettä lähetetä palvelimelle.
Aiheeseen liittyvät työkalut
- .htaccess-uudelleenohjausgeneraattori Luo 301- ja 302-ohjaukset .htaccess-tiedostoon tai Nginxiin, pakota HTTPS ja www, siirrä verkkotunnus ja korjaa loppukauttaviivat silmukka- ja ketjutarkistus.
- Meta-tagigeneraattori Ilmainen meta-tagigeneraattori otsikolle, meta descriptionille, canonical-URL:lle sekä robots- ja viewport-tageille pituustarkistuksin ja suojatulla HTML:llä.
- Hash-generaattori Luo MD5-, SHA-1-, SHA-256- ja SHA-512-tiivisteet tekstistä tai minkä kokoisista tiedostoista tahansa ja tarkista tarkistussummat. Kaikki toimii selaimessa.
- Robots.txt-generaattori Luo kelvollinen robots.txt-tiedosto user agent -ryhmillä, Allow- ja Disallow-säännöillä, sivukartoilla ja crawl-delaylla sekä yleisten virheiden tarkistuksella.