Defaults.Exposed

Defaults.ExposedTaisymai › 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

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:

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:

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.

  1. Pradėkite tik ataskaitų režimu – dar nevykdykite. Pridėkite Content-Security-Policy-Report-Only atsakymo 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.)

  2. 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.

  3. Venkite spragų, kurios panaikina visą tikslą. Venkite 'unsafe-inline' ir 'unsafe-eval' scenarijams ir venkite šaltinių su žvaigždelė kaip * ir atviro schemos kaip https: 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ą.

  4. 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ą) ir object-src 'none', kad blokuotumėte senojo tipo priedų atakas.

  5. 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.
  6. Iš naujo patikrinkite savo domeną, kad patvirtintumėte, jog politika dabar rodoma kaip įjungta ir vykdoma, be silpninančių spragų.

Dažnos klaidos

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ų.