Defaults.Exposed › Taisymai › Turinio saugumo politika (CSP)
Kaip ištaisyti Turinio saugumo politika (CSP)
Turinio saugumo politika yra saugumo taisyklė, kurią jūsų svetainė priskiria kiekvieno lankytojo naršyklei, sakydama jai tiksliai, kokiam kodui leidžiama vykdytis. Be jos, jei kas nors kenksmingas kada nors patenka į puslapį – per komentarų laukelį, nulaužtą priedą ar trečiosios šalies scenarijų – naršyklė jį vykdys laisvai, įskaitant kodą, kuris tyliai skaitytų jūsų klientų kortelių numerius ir slaptažodžius, kai jie įveda, kol spyna vis dar rodoma.
Praktinė reikšmė jūsų verslui: Jei jūsų svetainė kada nors bus sulaužyta, kenksmingas kodas gali perskaityti jūsų klientų mokėjimo kortelės ir prisijungimo duomenis tiesiai nuo jūsų atsiskaitymų, kol viskas atrodo visiškai normalu – palikdamas jums grąžinimus, sukčiavimo pretenzijas, praneštiną duomenų pažeidimą ir tikrinimo nesėkmę, kurią didesnių klientų saugumo komandos naudoja sandoriams stabdyti ar žlugdyti.
Ką tai gali kainuoti
- Paslėptas kodas patenka į vieną iš jūsų puslapių ir tyliai kopijuoja kiekvieną kortelės numerį ir slaptažodį, kurį jūsų klientai įveda atsiskaitant, siųsdamas jį užpuolikui, kol jūsų svetainė atrodo visiškai normali – sužinote tik tada, kai ateina sukčiavimo skundai.
- Sukčius ant jūsų tikros svetainės pastato netikrą 'mokėkite čia' formą, kuri ima mokėjimus į savo sąskaitą; klientai mano, kad jums sumokėjo, kaltina jus, kai prekės neatvyksta, ir reikalauja pinigų atgal.
- Didesnio kliento saugumo komanda nuskaito jūsų svetainę, pamato, kad ši pagrindinė apsauga yra išjungta, ir pažymi ją – stabdydama ar prarašydama jums sandorį, kol galite įrodyti, kad jis ištaisytas.
- Pažeidimas, atsektas iki trūkstamos standartinės apsaugos priemonės, tampa praneštimu: reguliavimo institucijų klausimai, klientų pranešimai ir reputacijos smūgis, kainuojantis daug daugiau nei nemokamas pataisymas.
Kodėl tai svarbu. Spyna įrodo, kad ryšys su jūsų svetaine yra privatus, bet ji nieko nedaro, kad kontroliuotų, koks kodas vykdomas, kai lankytojas yra puslapyje. Turinio saugumo politika yra apsauga, kuri tai daro – ji sako naršyklėms ignoruoti bet kokį scenarijų, kuris neatvyko iš jūsų pasitikimos šaltinio, todėl vienas sulaužytas laukelis, skelbimas ar priedas negali būti paverstas įrankiu jūsų klientų pinigams ir duomenims vogti. Tai yra vertinamas patikrinimas jūsų rezultatų kortelėje, vertas tikrų taškų, ir vienas pirmų dalykų, kurių profesionali saugumo peržiūra ieško.
Kas tai yra, paprastais žodžiais
Kai kas nors apsilanko jūsų svetainėje, jų naršyklė atsisiunčia jūsų puslapį ir vykdo bet kokį jame esantį kodą – scenarijus, dėl kurių meniu leidžiasi, mygtukai veikia, mokėjimo formos pateikiamos ir pan. Pagal numatytąjį, naršyklė juo visiškai pasitiki. Ji neturi būdo žinoti, kuris kodas yra tikrai jūsų ir kuris buvo slapta įterptas kažkieno kito.
Turinio saugumo politika (dažnai sutrumpinta kaip CSP) yra trumpas taisyklių sąrašas, kurį jūsų svetainė priskiria kiekvienam puslapiui, sakydama naršyklei: „Vykdyk tik kodą iš šių patvirtintų šaltinių ir atsisakyk visko kito.” Tai skirtumas tarp nakties klubo, kuris leidžia visiems, ir to, kuris turi svečių sąrašą prie durų.
Priežastis, kodėl tai taip svarbu, yra ta, kad svetainės nuolat yra sulaužomos – ne visada nulaužiant jūsų serverį, bet per galines duris, kurias dauguma svetainių palieka atviras: komentarų laukelį, paieškos laukelį, pasenusį priedą, trečiosios šalies sklaidos ar analizės scenarijų ar pokalbių valdiklį. Jei užpuolikas gauna net vieną savo kodo eilutę ant vieno iš jūsų puslapių, naršyklė jį vykdo tarsi jis būtų jūsų. Nuo to momento jis gali skaityti viską, ką įveda jūsų klientai – kortelių numerius, slaptažodžius, adresus – ir tyliai siųsti tai kitur. Turinio saugumo politika uždaro tas duris atsisakydama vykdyti bet ką iš šaltinio, kurio nepatvirtinote.
Kiek tai gali jus kainuoti
Tai nėra abstraktu. Ataka, kurią turinio saugumo politika neleidžia – kodas, įterptas į puslapį, kuris vagia duomenis iš jūsų klientų – yra už kai kurių didžiausių kortelių nulaužimo pažeidimų rekorde. Štai kaip tai paprastai vyksta normaliam verslui:
-
Nematomas atsiskaitymų skaitytuvas. Užpuolikas per pažeidžiamą priedą ar pažeistą trečiosios šalies scenarijų perlieja kelias kodo eilutes ant jūsų atsiskaitymų puslapio. Kiekvienas kortelės numeris, vardas ir CVV, kurį jūsų klientai įveda, yra kopijuojamas ir siunčiamas užpuolikui realiu laiku. Jūsų svetainė atrodo ir veikia puikiai; spyna yra. Apie tai sužinote savaitėmis vėliau, kai jūsų mokėjimo tiekėjas skambina dėl sukčiavimo pranešimų grupės, atsekant atgal į jūsų parduotuvę. Dabar jūs susidursite su grąžinimais, priverstine saugumo auditu, galima kortelių apdorojimo teisių praradimu ir pažeidimu, kurį galbūt esate teisiškai įpareigoti pranešti.
-
Netikra mokėjimo forma. Sukčius ant jūsų tikros svetainės įterpia įtikinamą „mokėkite čia” laukelį. Klientai įveda savo duomenis pasitikėdami jūsų prekės ženklu; pinigai ir duomenys eina pas užpuoliką. Klientai kaltina jus – ir jie nėra neteisūs, nes tai įvyko jūsų svetainėje.
-
Prarastas sandoris. Didesnio perspektyvaus kliento saugumo komanda paleidžia automatinį jūsų svetainės nuskaitymą kaip tiekėjo deramo patikrinimo dalį. Trūkstama turinio saugumo politika iš karto atsiranda kaip didelės rimtumo spraga. Įsigijimo ar saugumo peržiūrininkui ta viena trūkstama apsaugos priemonė skaitoma kaip „šis tiekėjas nedaro pagrindinių dalykų” – ir sandoris stringa, kol jie prašo taisymo, arba tyliai eina pas konkurentą, kuris praėjo.
-
Pranešamas pažeidimas. Kai duomenų pažeidimas atsekamas iki trūkstamos, standartinės, nemokamos apsaugos priemonės, jis nustoja būti nesėkme ir pradeda atrodyti kaip aplaidumas. Tai keičia reguliavimo institucijų klausimus, klientų pranešimo pareigą ir išlaidą – tiek baudą, tiek reputacinę žalą, kuri lieka ilgai po incidento uždarymo.
-
Pažeistas skelbimas ar valdiklis. Daugelis svetainių įkelia kodą iš išorės šalių – skelbimų tinklų, šriftų, palaikymo pokalbių, analizės. Jei bet kuris iš jų yra pažeistas, kenksmingas kodas tiesiogiai patenka į jūsų puslapius. Turinio saugumo politika riboja žalos mastą leisdama tik konkrečius išorinius šaltinius, kuriais pasitikite, todėl vieno tiekėjo pažeidimas automatiškai netampa jūsų pažeidimu.
Kas tai iš tikrųjų yra (detalė)
Turinio saugumo politika pristatoma kaip viena HTTP atsakymo antraštė – eilutė, kurią jūsų žiniatinklio serveris siunčia su kiekvienu puslapiu. Jos reikšmė yra direktyvų rinkinys, kiekvienas įvardijantis turinio tipą ir jo leidžiamus šaltinius. Pavyzdžiui:
Content-Security-Policy: default-src 'self'; script-src 'self'; object-src 'none'; frame-ancestors 'self'
Paprastais žodžiais tai sako: pagal numatytąjį įkelkite tik dalykus iš mano pačios svetainės; vykdykite tik scenarijus iš mano pačios svetainės; leiskite jokių senojo stiliaus priedų; neleiskite kitoms svetainėms įterpti manęs rėme.
Kaip atrodo „gerai”. Mūsų tikrinimas ne tik ieško antraštės buvimo – jis skaito politiką direktyva po direktyvos ir vertina, kaip stipri ji iš tikrųjų yra, taip kaip saugumo peržiūrėtojas darytų. Stipri politika:
- Nustato ribojantį pagrindą (
default-src 'self') ir jį praplečia tik konkretiems pasitikimiems trečiųjų šalių, kurias iš tikrųjų naudojate. - Vengia spragų. Ji nenaudoja
'unsafe-inline'ar'unsafe-eval'scenarijams ir nenaudoja žvaigždelės (*) ar atviro schemos šaltinių (kaiphttps:) scenarijams – tai efektyviai iš naujo atidaro duris, kurias politika skirta uždaryti. Kur yra vidinių scenarijų poreikis, ji naudoja nonce ar maišą, kad vykdytų tik jūsų konkrečiai patvirtintą kodą. - Užrakina kadrų kūrimą su
frame-ancestors 'self'(tai taip pat blokuoja „įterpkite jūsų svetainę, kad apgautumėte klientus” ataką) ir išjungia senojo tipo priedus suobject-src 'none'. - Vykdoma, ne tik ataskaitų.
Content-Security-Policy-Report-Onlyantraštė tik stebi; ji suteikia nulinę vykdomą apsaugą. Mūsų tikrinimas suteikia jai mažą dalį kredito ir niekada jos neužregistruoja kaip praėjimo. Jūs esate apsaugoti tik kai politika yra vykdoma.
Politika, kuri egzistuoja, bet remiasi 'unsafe-inline', 'unsafe-eval' ar žvaigždelėmis, vis tiek bus žemai vertinama – nes praktiškai ji suteikia mažai realios apsaugos. Tikslas yra griežta politika, ne tik bet kokia politika.
Kaip tai ištaisyti (nemokama, ~1–2 valandos)
Perduokite tai savo IT asmeniui ar tam, kas valdo jūsų svetainę – pats pataisymas yra visiškai nemokamas. Mes imame mokestį tik už stebėseną, kad jis išliktų ir būtų teisingas laikui bėgant; jo įjungimas nieko nekainuoja. Priežastis, kodėl tai trunka valandą ar dvi, o ne minutes, yra atsargus bandomasis žingsnis, kuris apsaugo nuo atsitiktinio dalių jūsų svetainės blokavimo.
-
Pradėkite tik ataskaitų režimu – dar nevykdykite. Pridėkite
Content-Security-Policy-Report-Onlyatsakymo antraštę. Tai stebi ir registruoja, kas būtų blokuojama, faktiškai nieko neblokuodamas, todėl gyva svetainė toliau veikia, kol sužinate, nuo ko iš tikrųjų priklauso kiekvienas puslapis. (Svarbu: tik ataskaitų nuosavas nesuteikia lankytojams apsaugos – tai yra tik saugus pirmasis žingsnis.) -
Sukurkite politiką iš to, ką jūsų svetainė iš tikrųjų naudoja. Peržiūrėkite ataskaitas, kad rastumėte kiekvieną teisėtą šaltinį scenarijų, stilių, šriftų ir vaizdų – jūsų pačių domeną, jūsų analizę, mokėjimo tiekėją, šriftų prieglobą, pokalbių valdiklį – ir išvardinkite juos kaip leistinus šaltinius. Geras pradinis taškas yra
default-src 'self'plius aiškūs įrašai pasitikimiems trečiųjų šalių, kuriais iš tikrųjų naudojatės. -
Venkite spragų, kurios panaikina visą tikslą. Venkite
'unsafe-inline'ir'unsafe-eval'scenarijams ir venkite šaltinių su žvaigždelė kaip*ir atviro schemos kaiphttps:scenarijams – tai iš naujo atidaro tiksliai spragą, kurią politika skirta uždaryti. Kur vidiniai scenarijai yra neišvengiami, naudokite nonce ar maišą, kad vykdytų tik jūsų konkrečiai patvirtintą kodą. -
Užrakinkite kadrų kūrimą ir priedus. Pridėkite
frame-ancestors 'self'(tai taip pat sustabdo kitas svetaines įterpiančias jūsų, kad apgautų jūsų klientus, ir jis patenkina susijusį paspaudimų pagrobimo tikrinimą) irobject-src 'none', kad blokuotumėte senojo tipo priedų atakas. -
Perjunkite nuo tik ataskaitų į vykdomą. Kai ataskaitos yra švarios ir svetainė veikia, pakeiskite antraštės pavadinimą nuo
Content-Security-Policy-Report-OnlyįContent-Security-Policy. Tai yra žingsnis, kuris iš tikrųjų suteikia apsaugą – tik ataskaitų politika viena to nedaro, ir neras praėjimo.Kur nustatyti antraštę priklauso nuo jūsų platformos:
- Cloudflare: Taisyklės → Transformavimo taisyklės → Modifikuoti atsakymo antraštę → nustatykite
Content-Security-Policy. - Nginx:
add_header Content-Security-Policy "default-src 'self'; script-src 'self'; object-src 'none'; frame-ancestors 'self';" always; - Apache:
Header always set Content-Security-Policy "default-src 'self'; script-src 'self'; object-src 'none'; frame-ancestors 'self';" - IIS (web.config): pridėkite pasirinktinę HTTP atsakymo antraštę, pavadintą
Content-Security-Policy, su politika kaip reikšme. - Google Workspace / Microsoft 365: jie valdo jūsų el. paštą, ne jūsų viešą svetainę, todėl politika nustatyta ten, kur jūsų svetainė iš tikrųjų prieglobsta (Cloudflare ar žiniatinklio priegloba aukščiau), ne jūsų el. pašto administravimo konsolėje.
- Cloudflare: Taisyklės → Transformavimo taisyklės → Modifikuoti atsakymo antraštę → nustatykite
-
Iš naujo patikrinkite savo domeną, kad patvirtintumėte, jog politika dabar rodoma kaip įjungta ir vykdoma, be silpninančių spragų.
Dažnos klaidos
- Stabdymasis tik ataskaitomis. Viena dažniausia klaida: politika pridedama tik ataskaitų režimu, visi eina toliau, ir svetainė niekada iš tikrųjų nėra apsaugota. Tik ataskaitos nieko neblokuoja. Turite pereiti prie vykdymo.
'unsafe-inline'naudojimas, kad viskas „tiesiog veiktų”. Kai politika blokuoja teisėtą vidinį scenarijų, greitas pataisymas yra leisti visus vidinius scenarijus – bet tai iš naujo atidaro tiksliai skylę, kurią politika turėjo uždaryti. Vietoje to naudokite nonce ar maišą.- Žvaigždelės naudojimas. Plikas
*(arhttps:)script-srcleidžia scenarijus iš bet kur, kas reiškia, kad politika suteikia beveik jokios realios apsaugos ir vis tiek bus žemai vertinama. - Trečiųjų šalių šaltinių pamiršimas. Griežtos politikos vykdymas be pirmesnio teisėtų išorinių paslaugų, kurias naudojate (analizė, šriftai, mokėjimo valdikliai), išvardinimo gali sulaužyti savo svetainės dalis – štai kodėl tik ataskaitų bandomasis žingsnis egzistuoja.
- Nustatymas tik pradiniame puslapyje. Politika turi apimti kiekvieną puslapį, ypač atsiskaitymą, prisijungimą ir paskyros puslapius – tai yra tie, kuriuos verta pulti.
- Tai kaip spynos pakeitimas. Turinio saugumo politika ir HTTPS / HSTS apsaugo skirtingus dalykus. Jums reikia visų jų; vienas neapima kito.
DUK
Aš nesu technikas – ar galiu tai sutvarkyti pats?
Jums nereikia suprasti detalių. Tai yra nustatymas, kurį prideda tas, kas valdo jūsų svetainę ar prieglobą, ir tokiose paslaugose kaip Cloudflare jis didžia dalimi yra vadovaujamas. Perduokite jiems toliau pateiktą skyrių 'Kaip tai ištaisyti'. Jis yra nemokamas; vienas įspėjimas yra tas, kad pirmiausia jį reikia paleisti atsargiai tik stebėjimo bandomajame režime, kad jis atsitiktinai neblokuotų dalių jūsų svetainės – tai yra tiksliai tai, ką žingsniai apima.
Aš jau turiu spyną ir SSL sertifikatą – ar mano svetainė nesaugi?
Spyna apsaugo jūsų puslapio pristatymą; ji nepoliciuoja to, kas viduje veikia. Jei kenksmingas kodas kada nors patenka į puslapį – per nulaužtą priedą, pažeistą skelbimą ar įterptą laukelį – spyna nesustabdys jo vogti duomenis. Turinio saugumo politika yra sluoksnis, kuris riboja, kas apskritai leidžiama vykdytis. Jie apsaugo skirtingus dalykus, ir jums reikia abiejų.
Ar įjungus tai galėtų sugadinti mano svetainę?
Gali, jei tai agresyviai vienu metu įjungta, nes ji gali blokuoti teisėtus scenarijus, kuriuos iš tikrųjų naudojate. Štai kodėl standartinis metodas yra pradėti nuo 'tik ataskaitų' bandomojo režimo, kuris stebi be blokavimo, ištaisyti viską, ką pažymi, ir tik tada jį vykdyti. Atlikta tokiu būdu yra saugu – ir bandomasis žingsnis yra integruotas į toliau pateiktą pataisymą.
Mes jį jau įdėjome 'tik ataskaitų' režimu – ar mes apsaugoti?
Ne, ir tai yra dažniausias klaidingo saugumo jausmas. Tik ataskaitų režimas stebi ir registruoja, kas būtų blokuojama, bet nieko neblokuoja – lankytojai negauna jokios realios apsaugos. Tai yra tik saugus pirmasis žingsnis. Mūsų tikrinimas suteikia tik ataskaitų dalinis kreditas, lyginant su tikra politika, ir neužregistruos jo kaip praėjimo. Jūs esate apsaugoti tik tada, kai pereinate į vykdymo režimą.
Ar tai veikia mūsų vertinimą, ar tai tik patarimas?
Tai veikia jūsų vertinimą. Turinio saugumo politikos tikrinimas yra vertinamas ir vertas iki 25 taškų žiniatinklio saugumo kategorijoje. Trūkstama ar silpna politika yra pažymėta kaip aukšto rimtumo ir žemina jūsų vertinimą – ir tai yra tiksliai tokio tipo spraga, apie kurią klausia kliento saugumo klausimynas.
Mūsų kūrėjas pridėjo politiką, bet vertinimas vis dar žemas – kodėl?
Politika gali egzistuoti ir vis tiek būti silpna. Dažniausios kaltininkės yra spragos kaip 'unsafe-inline' ir 'unsafe-eval' scenarijams ar šaltiniai su žvaigždelė (*), kurie iš naujo atidaro tiksliai spragą, kurią politika turėjo uždaryti. Mūsų tikrinimas skaito politiką direktyva po direktyvos ir vertina žemiau tų silpnybių – politika, leidžianti bet ką, vertinama šiek tiek geriau nei jos visai neturėjimas. Pataisymas yra sugriežtinti scenarijaus taisykles naudojant nonce ar maišas vietoj tų spragų.