Generator ng Content Security Policy
Bumuo ng Content-Security-Policy header, meta tag at Report-Only na bersyon gamit ang preset, nonce at SHA-256 hash, at suriin ang umiiral na policy.
Magsimula sa preset
Ang mga Google host ay mga halimbawa mula sa patnubay ng Google sa CSP para sa Google tag. Binabago ito ng Google paminsan-minsan: tingnan ang kasalukuyang dokumentasyon at alisin ang hindi mo ginagamit.
Sa isang <meta> tag, binabalewala ng browser ang frame-ancestors, report-uri, report-to at sandbox, at hindi sinusuportahan ang Report-Only. Ilagay ang tag sa itaas ng <head>: nakakabit lamang ito sa nilalamang kasunod nito.
Pagsusuri ng policy na ito
Walang nakitang kahinaan sa mga pagsusuring ito.
Suriin ang umiiral na policy
Paano bumuo ng policy
- Pumili ng panimulang punto sa Magsimula sa preset: Mahigpit (nonce + strict-dynamic), Nakalock na static na site, Karaniwang website o Karaniwan + Google Analytics / Ads. Bubukas ang editor gamit ang preset na karaniwang website.
- Ayusin ang Mga direktiba. Tumatanggap ang bawat field ng mga source na pinaghihiwalay ng espasyo; kapag blangko ang field, hindi isasama ang direktiba.
- Gamitin ang Mabilisang dagdag para magdagdag ng keyword sa napiling Direktiba:
'self','none','unsafe-inline','strict-dynamic',https:,data:… Naglalagay ang Magdagdag ng nonce ng random na 128-bit na nonce. - Para payagan ang isang partikular na inline script nang walang
'unsafe-inline', i-paste ito (o ang HTML sa paligid nito) sa I-hash ang isang inline script o style at i-click ang Kalkulahin ang SHA-256 at idagdag. - Lagyan ng tsek ang upgrade-insecure-requests kung may lumang URL pa na gumagamit ng
http://, at opsyonal na maglagay ng URL ng report endpoint. - Kopyahin ang HTTP header, ang Report-Only header o ang HTML tag. Nag-a-update ang Pagsusuri ng policy na ito habang nagta-type ka.
Para suriin ang policy na mayroon ka na, i-paste ito sa Suriin ang umiiral na policy at i-click ang Suriin ang policy; kinokopya ng I-load sa editor ito sa mga field.
Ano ang ginagawa ng Content Security Policy
Sinasabi ng CSP sa browser kung saang origin maaaring mag-load ang isang page ng script, style, larawan, font, frame at koneksyon. Ang pangunahing trabaho nito ay limitahan ang cross-site scripting (XSS): kahit makapasok ang isang attacker ng markup sa iyong page, pinipigilan ng maayos na policy ang na-inject na script na tumakbo. Kinokontrol din nito kung sino ang maaaring mag-frame ng iyong page (frame-ancestors), saan maaaring mag-post ang form (form-action) at kung ano ang maaaring ituro ng <base> (base-uri).
Ang mga fetch directive tulad ng img-src o font-src ay bumabalik sa default-src kapag wala sila. Ang base-uri, form-action at frame-ancestors ay hindi bumabalik, kaya tahasang hinihingi ng pagsusuri ang mga ito.
Nonce, hash at strict-dynamic
Ang pagpayag sa mga host (script-src https://cdn.example.com) ay mukhang ligtas pero madalas na malalampasan: naghahatid ang malalaking domain ng JSONP endpoint at lumang library na maaaring gamitin muli ng attacker. Ang inirerekomendang paraan ng mga browser security team ay isang strict CSP: bawat lehitimong <script> ay may dalang nonce na ginawa ng server para sa bawat response, o pinapayagan ng hash nito, at hinahayaan ng 'strict-dynamic' ang mga pinagkakatiwalaang script na mag-load ng mga script na kailangan nila. Sa setup na iyon, ang https: at 'unsafe-inline' ay fallback lamang para sa napakalumang browser; binabalewala ang mga ito ng modernong browser.
Gumagana lamang ang nonce kung nagbabago ito sa bawat response at hindi mahuhulaan. Ang inilalagay ng Magdagdag ng nonce ay halimbawa lamang: kailangang gumawa ng sarili ang iyong server o framework. Sinasakop ng hash ang eksaktong byte ng inline code, kaya ang muling pag-format ng script ay nangangailangan ng bagong hash.
Header, Report-Only at meta tag
Ipadala ang policy bilang HTTP response header hangga’t kaya. I-deploy muna ito bilang Content-Security-Policy-Report-Only: nag-uulat ang browser ng mga paglabag (sa console, at sa iyong endpoint kung may nakatakda) nang hindi hinaharangan ang anuman, para maayos mo ang iyong page bago ipatupad. Ang report setting ay nagdadagdag ng report-uri para sa lumang browser at report-to na may Reporting-Endpoints header.
Ang bersyong <meta http-equiv> ay maginhawa sa static hosting, pero binabalewala ng browser ang frame-ancestors, report-uri, report-to at sandbox dito, at walang Report-Only meta tag. Inaalis ng tool ang mga direktibang iyon sa tag at sinasabi ito.
Mga madalas itanong
Problema ba ang 'unsafe-inline' sa style-src?
Hindi gaanong mapanganib kaysa sa script-src at karaniwan ito, dahil maraming library ang naglalagay ng inline style. Maaari pa ring sirain ng na-inject na CSS ang page o mag-leak ng data, kaya inililista ito ng pagsusuri bilang mababang severity.
Kumpleto ba ang mga host ng Google Analytics?
Mga halimbawa ang mga ito mula sa patnubay ng Google sa CSP para sa Google tag. Inaayos ito ng Google sa paglipas ng panahon at maaaring kailanganin ang rehiyonal na domain; tingnan ang kasalukuyang dokumentasyon ng Google at alisin ang hindi mo ginagamit. Kailangan din ng inline na gtag.js snippet ng nonce o hash.
Bakit hinaharangan ng policy ko ang sarili kong inline script?
Kapag nakatakda na ang script-src nang walang 'unsafe-inline', hinaharangan ang bawat inline <script> at onclick= attribute. Ilipat ang code sa file, o magdagdag ng nonce o hash.
Pinapalitan ba ng CSP ang pag-escape sa input ng user?
Hindi. Pangalawang linya ng depensa ang CSP. Panatilihin ang pag-escape sa output at pag-validate ng input; nililimitahan ng policy ang pinsala kapag may nakalusot.
Pwede ba akong magkaroon ng maraming policy?
Oo: kung tumatanggap ang isang page ng ilang CSP header, dapat matugunan ng isang resource ang lahat ng ito. I-paste ang isang policy nang paisa-isa sa evaluator.
Mga kaugnay na tool
- Generator ng .htaccess Redirect Gumawa ng 301 at 302 redirect para sa .htaccess o Nginx, pilitin ang HTTPS at www, ilipat ang domain at ayusin ang trailing slash, may check sa loop at chain.
- Generator ng Meta Tag Libreng meta tag generator para sa pamagat, meta description, canonical URL, robots at viewport tag, may length check at tamang naka-escape na HTML.
- Hash Generator Gumawa ng MD5, SHA-1, SHA-256 at SHA-512 hash ng text o mga file na anumang laki, at i-verify ang mga checksum. Lahat ay tumatakbo sa iyong browser.
- Generator ng Robots.txt Gumawa ng valid na robots.txt file na may user-agent group, Allow at Disallow rule, sitemap at crawl-delay, may check sa karaniwang pagkakamali.