CSP generatorius (Content Security Policy)
CSP generatorius: sukurk Content-Security-Policy antraštę, meta žymę ir Report-Only versiją su šablonais, nonce ir SHA-256 maišais bei patikrink esamą politiką.
Pradėk nuo šablono
Google serverių adresai yra pavyzdžiai iš Google CSP rekomendacijų Google žymai. Google juos retkarčiais keičia: patikrink dabartinę dokumentaciją ir pašalink tai, ko nenaudoji.
<meta> žymėje naršyklės ignoruoja frame-ancestors, report-uri, report-to ir sandbox, o Report-Only nepalaikomas. Įdėk žymę <head> pradžioje: ji taikoma tik už jos esančiam turiniui.
Šios politikos peržiūra
Šios patikros silpnų vietų nerado.
Įvertink esamą politiką
Kaip sukurti politiką
- Skiltyje Pradėk nuo šablono pasirink pradžios tašką: Griežta (nonce + strict-dynamic), Maksimaliai užrakinta statinė svetainė, Tipinė svetainė arba Tipinė + Google Analytics / Ads. Redaktorius atsidaro su tipinės svetainės šablonu.
- Pakoreguok Direktyvas. Kiekviename lauke šaltiniai rašomi atskiriant tarpais; tuščias laukas direktyvą praleidžia.
- Naudok Greitas pridėjimas, kad pasirinktai Direktyva pridėtum raktažodį:
'self','none','unsafe-inline','strict-dynamic',https:,data:… Mygtukas Pridėti nonce įterpia atsitiktinį 128 bitų nonce. - Jei nori leisti konkretų įterptą skriptą be
'unsafe-inline', įklijuok jį (arba aplinkinį HTML) į Suskaičiuok įterpto skripto ar stiliaus maišą ir spustelėk Skaičiuoti SHA-256 ir pridėti. - Pažymėk upgrade-insecure-requests, jei kai kurie seni adresai vis dar naudoja
http://, ir, jei nori, įvesk Ataskaitų gavimo adresas (nebūtina). - Nukopijuok HTTP antraštė, Report-Only antraštė (bandymas be blokavimo) arba HTML žymė. Šios politikos peržiūra atsinaujina, kai tik rašai.
Jei nori patikrinti jau turimą politiką, įklijuok ją skiltyje Įvertink esamą politiką ir spustelėk Įvertinti politiką; mygtukas Įkelti į redaktorių perkelia ją į laukus. Viskas vyksta tavo naršyklėje, nieko nesiunčiame į serverį.
Ką daro Content Security Policy
CSP nurodo naršyklei, iš kokių šaltinių puslapis gali įkelti skriptus, stilius, paveikslėlius, šriftus, įterptus rėmelius ir tinklo ryšius. Pagrindinis jos tikslas – apriboti tarpsvetainio scenarijų vykdymą (XSS): net jei užpuolikas į tavo puslapį įterpia savo žymėjimą, gera politika neleidžia įterptam skriptui veikti. Ji taip pat valdo, kas gali įterpti tavo puslapį (frame-ancestors), kur galima siųsti formas (form-action) ir į ką gali rodyti <base> (base-uri).
Gavimo direktyvos, pavyzdžiui, img-src ar font-src, jei jų nėra, naudoja default-src reikšmę. base-uri, form-action ir frame-ancestors atsarginės reikšmės neturi, todėl peržiūra jų prašo atskirai.
Nonce, maišai ir strict-dynamic
Leisti tik tam tikrus serverius (script-src https://cdn.example.com) atrodo saugu, bet tokią apsaugą dažnai galima apeiti: dideli domenai teikia JSONP galinius taškus ir senas bibliotekas, kuriomis užpuolikas gali pasinaudoti. Naršyklių saugumo komandų rekomenduojamas būdas yra griežta CSP: kiekvienas teisėtas <script> turi serverio kiekvienam atsakui sukurtą nonce arba yra leidžiamas pagal savo maišą, o 'strict-dynamic' leidžia šiems patikimiems skriptams įkelti kitus reikalingus skriptus. Tokiu atveju https: ir 'unsafe-inline' yra tik atsarginės reikšmės labai senoms naršyklėms; šiuolaikinės jų nepaiso.
Nonce veikia tik tada, jei keičiasi kiekvienam atsakui ir yra neprognozuojamas. Su Pridėti nonce įterptas nonce yra tik pavyzdys: tavo serveris ar karkasas turi sukurti savo. Maišas apima tikslius įterpto kodo baitus, todėl pakeitus skripto formatavimą reikia naujo maišo.
Antraštė, Report-Only ir meta žymė
Politiką, kai tik galima, siųsk kaip HTTP atsako antraštę. Pirmiausia ją paleisk kaip Content-Security-Policy-Report-Only: naršyklės praneša apie pažeidimus (į konsolę ir į tavo nurodytą adresą), bet nieko neblokuoja, todėl puslapius gali sutvarkyti prieš įjungiant politiką. Ataskaitų nustatymai prideda report-uri senesnėms naršyklėms ir report-to su Reporting-Endpoints antraštę.
<meta http-equiv> versija patogi statiniame prieglobos serveryje, tačiau naršyklės joje ignoruoja frame-ancestors, report-uri, report-to ir sandbox, o Report-Only meta žymės nėra. Įrankis šias direktyvas iš žymės pašalina ir apie tai praneša.
Dažnai užduodami klausimai
Ar 'unsafe-inline' direktyvoje style-src yra problema?
Tai mažiau pavojinga nei script-src, ir labai paplitę, nes daugelis bibliotekų nustato įterptus stilius. Įterptas CSS vis tiek gali sugadinti puslapio vaizdą ar nutekinti duomenis, todėl peržiūroje tai pažymima kaip maža rizika.
Ar Google Analytics serverių sąrašas išsamus?
Tai pavyzdžiai iš Google CSP rekomendacijų Google žymai. Google juos laikui bėgant keičia, o kai kuriais atvejais gali prireikti regioninių domenų; patikrink dabartinę Google dokumentaciją ir pašalink tai, ko nenaudoji. Įterptam gtag.js fragmentui taip pat reikia nonce arba maišo.
Kodėl mano politika blokuoja mano paties įterptus skriptus?
Kai nustatomas script-src be 'unsafe-inline', blokuojamas kiekvienas įterptas <script> ir onclick= atributas. Perkelk kodą į failą arba pridėk nonce ar maišą.
Ar CSP pakeičia vartotojo įvesties ekranavimą?
Ne. CSP yra antroji gynybos linija. Toliau ekranuok išvestį ir tikrink įvestį; politika apriboja žalą, jei kas nors prasprūsta.
Ar gali būti kelios politikos?
Taip: jei puslapis gauna kelias CSP antraštes, išteklius turi atitikti jas visas. Į vertintuvą įklijuok po vieną politiką.
Susiję įrankiai
- .htaccess nukreipimo generatorius Sugeneruok 301 ir 302 nukreipimus .htaccess ar Nginx, priverstinį HTTPS ir www, domeno perkėlimą bei pabaigos brūkšnio taisykles su ciklų ir grandinių patikra.
- Meta žymių generatorius Nemokamas meta žymių generatorius: puslapio pavadinimas, meta aprašymas, kanoninis URL, robots ir viewport žymės su ilgio patikra ir teisingai ekranuotu HTML.
- Maišos generatorius (MD5, SHA-256) Sukurk teksto ar bet kokio dydžio failų MD5, SHA-1, SHA-256 ir SHA-512 maišas ir patikrink kontrolines sumas. Viskas vyksta tavo naršyklėje.
- Robots.txt generatorius Sukurk tinkamą robots.txt failą su user-agent grupėmis, Allow ir Disallow taisyklėmis, svetainės žemėlapiais ir crawl-delay bei dažniausių klaidų patikra.