Content Security Policy ja sinu CMP: kuidas panna CSP ja nõusolek koos toimima

Kaks turvakihti, mis peavad omavahel kokku leppima

Content Security Policy (CSP) ütleb brauserile, millistest allikatest võib leht laadida skripte, stiile, pilte, kaadreid ja võrgupäringuid. Nõusolekuhaldusplatvorm teeb vastupidist tööd: ta otsustab kasutaja valiku põhjal, millised neist skriptidest tohivad käivituda. Kui kaks on seadistatud eraldi, põrkuvad need kokku. CMP ei lae, sest CSP blokeerib selle, või CSP-d lõdvendatakse CMP ja reklaamimärgendite mahutamiseks nii palju, et see ei kaitse enam midagi.

See juhend selgitab, milliseid CSP direktiive CMP tavaliselt vajab, kuidas nonce'id suhtlevad skriptide sissepritsimisega ja kuidas muudatused kasutusele võtta, bännerit rikkumata.

Mida CMP CSP-lt tavaliselt vajab

Täpsed nõuded sõltuvad pakkujast, seega alusta alati oma CMP enda dokumentatsioonist. Üldiselt kontrolli neid direktiive:

TCF-i saitidel pea meeles, et CMP loob lehele ka lokaatorkaadri nimega __tcfapiLocator. See kaader luuakse ilma kaugallikata, seega ei vaja see tavaliselt frame-src kirjet, kuid seda tasub testimisel kinnitada.

Inline stubi probleem

Enamik CMP-sid palub paigutada lehe päisesse väikese inline-skripti — stubi —, et teised skriptid saaksid kutseid järjekorda panna enne põhi-CMP laadimist. Range CSP blokeerib inline-skriptid, kui sa neid selgesõnaliselt ei luba. Sul on kolm võimalust:

  1. Nonce. Genereeri iga vastuse jaoks juhuslik väärtus, lisa see CSP päisesse kujul 'nonce-...' ja stubi <script> märgendisse. See on dünaamiliste lehtede jaoks kõige paindlikum valik.
  2. Räsi. Lisa stubi täpse sisu SHA-256 räsi direktiivi script-src. See sobib hästi staatilistele saitidele, kuid iga muudatus stubis, isegi tühik, rikub selle.
  3. Stubi ise majutamine välise failina oma domeenil, mida katab 'self'. See nõuab hoolt, et see laadiks piisavalt vara.

Väldi 'unsafe-inline' kasutamist otseteena. See lubab iga inline-skripti, mis kaotab suure osa kaitsest, mida CSP pakub.

Nonce'id ja skriptid, mida CMP süstib

CMP, mis blokeerib skripte kuni nõusolekuni, töötab sageli nii, et hoiab neid tagasi ja süstib hiljem. Nonce'il põhineva CSP korral tuleb ka need süstitud skriptid lubada. On kaks levinud lähenemist:

Märgendihaldurid tekitavad sama küsimuse. Kui laadid reklaami- ja analüütikamärgendid märgendihalduri kaudu, järgi selle dokumentatsiooni nonce'ide kohta ja veendu, et CMP ja märgendihaldur kasutavad järjepidevat lähenemist.

Reklaamimärgendid raskendavad CSP-d

Programmaatiline reklaam laadib skripte ja kaadreid paljudelt domeenidelt ning loend muutub koos nõudluspartneritega. Avaldajad teevad tavaliselt ühe kahest valikust:

Mõlemal juhul peaks CMP olema selgesõnalises lubatud loendis, mitte katetud ainult metamärgiga, et CSP muudatus ei keelaks kunagi vaikselt bännerit.

Võta kasutusele report-only režiimiga

Kasuta esmalt päist Content-Security-Policy-Report-Only. Brauser teatab rikkumistest, midagi blokeerimata, nii et näed, mida uus poliitika rikuks.

  1. Paiguta poliitika report-only režiimis koos aruandluse lõpp-punktiga.
  2. Lae lehti puhastes brauseriprofiilides ja käi läbi kogu nõusolekuvoog: esimene külastus, nõustu kõigega, keeldu kõigest, kohandatud valik, tagasivõtmine.
  3. Vaata üle rikkumisaruanded ja brauseri konsool blokeeritud CMP ressursside osas.
  4. Kohanda poliitikat, seejärel lülitu jõustamisele.
  5. Hoia aruandlus pärast jõustamist sisse, et tabada regressioone.

CSP konflikti sümptomid

Peamised järeldused

← Blogi Loe kõike →