Utilia

CSP ģenerators (Content Security Policy)

Izveidojiet Content-Security-Policy galveni, meta tagu un Report-Only versiju ar sagatavēm, nonce un SHA-256 jaucējkodiem, kā arī pārbaudiet esošu politiku.

Sākt no sagataves

Google adreses ir piemēri no Google CSP ieteikumiem Google tagam. Google tās laiku pa laikam maina: pārbaudiet aktuālo dokumentāciju un noņemiet to, ko neizmantojat.

Direktīvas

Avoti, atdalīti ar atstarpēm. Atstājiet lauku tukšu, lai direktīvu izlaistu (ielādes direktīvas tad izmanto default-src).

Ātrā pievienošana

Nonce katrā atbildē jāģenerē no jauna kā nejauša vērtība jūsu serverī un jāatkārto katrā <script nonce="…">. Nemainīgs nonce neaizsargā neko.

Aprēķināt iekļauta skripta vai stila jaucējkodu

Jaucējkods aptver precīzu tekstu starp tagiem, ieskaitot atstarpes un rindu pārrāvumus: jebkurām izmaiņām vajadzīgs jauns jaucējkods. Iekļautajiem notikumu apstrādātājiem (onclick=…) ir vajadzīgs arī 'unsafe-hashes'.

Pārkāpumu ziņojumi

Pievieno report-uri (vecākām pārlūkprogrammām) un report-to ar Reporting-Endpoints galveni.

<meta> tagā pārlūkprogrammas ignorē frame-ancestors, report-uri, report-to un sandbox, un Report-Only netiek atbalstīts. Ievietojiet tagu <head> sākumā: tas attiecas tikai uz saturu, kas seko aiz tā.

Šīs politikas pārskats

Novērtēt esošu politiku

Kā izveidot politiku

  1. Sadaļā Sākt no sagataves izvēlieties sākumpunktu: Stingrā (nonce + strict-dynamic), Maksimāli ierobežota statiska vietne, Tipiska vietne vai Tipiska + Google Analytics / Ads. Redaktors atveras ar tipiskas vietnes sagatavi.
  2. Pielāgojiet Direktīvas. Katrā laukā avotus atdaliet ar atstarpēm; tukšs lauks direktīvu izlaiž.
  3. Ar Ātrā pievienošana izvēlētajai Direktīva pievienojiet atslēgvārdu: 'self', 'none', 'unsafe-inline', 'strict-dynamic', https:, data:… Poga Pievienot nonce ievieto nejaušu 128 bitu nonce.
  4. Lai atļautu konkrētu iekļautu skriptu bez 'unsafe-inline', ielīmējiet to (vai HTML ar to) sadaļā Aprēķināt iekļauta skripta vai stila jaucējkodu un noklikšķiniet uz Aprēķināt SHA-256 un pievienot.
  5. Atzīmējiet upgrade-insecure-requests, ja daži vecie URL vēl izmanto http://, un, ja vēlaties, ievadiet Ziņojumu galapunkta URL (neobligāts).
  6. Nokopējiet HTTP galvene, Report-Only galvene (pārbaude bez bloķēšanas) vai HTML tags. Šīs politikas pārskats atjaunojas, kamēr rakstāt.

Lai pārbaudītu jau esošu politiku, ielīmējiet to sadaļā Novērtēt esošu politiku un noklikšķiniet uz Novērtēt politiku; ar Ielādēt redaktorā politika tiek ievietota laukos. Rīks darbojas jūsu pārlūkprogrammā, un nekas, ko ievadāt, netiek sūtīts uz serveri.

Ko dara Content Security Policy

CSP norāda pārlūkprogrammai, no kādiem avotiem lapa drīkst ielādēt skriptus, stilus, attēlus, fontus, rāmjus un savienojumus. Tās galvenais uzdevums ir ierobežot starpvietņu skriptēšanu (XSS): pat ja uzbrucējs ieliek jūsu lapā kaitīgu kodu, laba politika neļauj tam darboties. Politika arī nosaka, kas drīkst iegult jūsu lapu (frame-ancestors), uz kurieni var nosūtīt veidlapas (form-action) un uz ko drīkst norādīt <base> (base-uri).

Ielādes direktīvas, piemēram, img-src vai font-src, ja tās nav norādītas, izmanto default-src. base-uri, form-action un frame-ancestors šādas rezerves vērtības nav, tāpēc pārskats par tām jautā atsevišķi.

Nonce, jaucējkodi un strict-dynamic

Resursdatoru atļaušana (script-src https://cdn.example.com) izskatās droša, taču bieži vien to var apiet: lielos domēnos ir JSONP galapunkti un vecas bibliotēkas, ko uzbrucējs var izmantot. Pārlūkprogrammu drošības komandu ieteiktā pieeja ir stingrā CSP: katram likumīgam <script> ir serverī katrai atbildei ģenerēts nonce vai tas ir atļauts ar jaucējkodu, bet 'strict-dynamic' ļauj šiem uzticamajiem skriptiem ielādēt tos, kas tiem vajadzīgi. Šādā iestatījumā https: un 'unsafe-inline' kalpo tikai kā rezerve ļoti vecām pārlūkprogrammām; mūsdienu pārlūkprogrammas tos ignorē.

Nonce darbojas tikai tad, ja mainās ar katru atbildi un nav paredzams. Ar Pievienot nonce ievietotā vērtība ir tikai piemērs: jūsu serverim vai ietvaram jāģenerē sava. Jaucējkods aptver precīzus iekļautā koda baitus, tāpēc pēc skripta pārformatēšanas vajadzīgs jauns jaucējkods.

Galvene, Report-Only un meta tags

Politiku sūtiet kā HTTP atbildes galveni, kad vien iespējams. Vispirms ieviesiet to kā Content-Security-Policy-Report-Only: pārlūkprogrammas ziņo par pārkāpumiem (konsolē un, ja norādījāt, arī uz jūsu galapunktu), neko nebloķējot, tāpēc lapas varat sakārtot pirms politikas ieviešanas. Ziņojumu iestatījumi pievieno report-uri vecākām pārlūkprogrammām un report-to ar Reporting-Endpoints galveni.

<meta http-equiv> versija ir ērta statiskā mitināšanā, taču pārlūkprogrammas tajā ignorē frame-ancestors, report-uri, report-to un sandbox, un Report-Only meta taga nav. Rīks šīs direktīvas no taga izņem un par to paziņo.

Biežāk uzdotie jautājumi

Vai 'unsafe-inline' direktīvā style-src ir problēma?

Tas ir mazāk bīstami nekā script-src un ļoti izplatīts, jo daudzas bibliotēkas iestata iekļautus stilus. Ievadīts CSS tomēr var izkropļot lapu vai noplūdināt datus, tāpēc pārskatā tas ir norādīts kā zemas nozīmes brīdinājums.

Vai Google Analytics adreses ir pilnīgas?

Tie ir piemēri no Google CSP ieteikumiem Google tagam. Google tos laika gaitā pielāgo, un var būt vajadzīgi reģionālie domēni; pārbaudiet aktuālo Google dokumentāciju un noņemiet to, ko neizmantojat. Arī gtag.js iekļautajam fragmentam vajadzīgs nonce vai jaucējkods.

Kāpēc mana politika bloķē manus pašu iekļautos skriptus?

Tiklīdz script-src ir iestatīts bez 'unsafe-inline', tiek bloķēts katrs iekļautais <script> un katrs onclick= atribūts. Pārvietojiet kodu uz failu vai pievienojiet nonce vai jaucējkodu.

Vai CSP aizstāj lietotāja ievades ekranēšanu?

Nē. CSP ir otrā aizsardzības līnija. Turpiniet ekranēt izvadi un pārbaudīt ievadi; politika ierobežo kaitējumu, ja kaut kas tomēr izlaists cauri.

Vai var izmantot vairākas politikas?

Jā: ja lapa saņem vairākas CSP galvenes, resursam jāatbilst visām. Novērtētājā ielīmējiet vienu politiku reizē.