Gjenerues i Content Security Policy (CSP)
Krijo një header Content-Security-Policy, etiketë meta dhe version Report-Only me modele, nonce dhe hash SHA-256, dhe audito një politikë ekzistuese.
Nis nga një model i gatshëm
Hostet e Google janë shembuj nga udhëzimet e CSP të Google për etiketën Google. Google i ndryshon herë pas here: kontrollo dokumentacionin aktual dhe hiq ato që nuk i përdor.
Në një etiketë <meta> shfletuesit i shpërfillin frame-ancestors, report-uri, report-to dhe sandbox, dhe Report-Only nuk mbështetet. Vendose etiketën në krye të <head>: vlen vetëm për përmbajtjen që vjen pas saj.
Shqyrtimi i kësaj politike
Këto kontrolle nuk gjetën dobësi.
Vlerëso një politikë ekzistuese
Si ta ndërtosh një politikë
- Zgjidh një pikënisje te Nis nga një model i gatshëm: Strikt (nonce + strict-dynamic), Faqe statike e mbyllur, Faqe interneti tipike ose Tipike + Google Analytics / Ads. Redaktuesi hapet me modelin e faqes tipike.
- Rregullo Direktivat. Çdo fushë pranon burime të ndara me hapësirë; një fushë e zbrazët e lë direktivën jashtë.
- Përdor Shtim i shpejtë për të shtuar një fjalë kyçe te Direktiva e zgjedhur:
'self','none','unsafe-inline','strict-dynamic',https:,data:… Shto një nonce fut një nonce të rastësishëm 128-bit. - Që të lejosh një skript të caktuar brenda faqes pa
'unsafe-inline', ngjite (ose ngjit HTML-në përreth) te Llogarit hash për një skript ose stil brenda faqes dhe kliko Llogarit SHA-256 dhe shto. - Shëno upgrade-insecure-requests nëse disa URL të vjetra përdorin ende
http://, dhe opsionalisht shkruaj një URL e pikës së raportimit. - Kopjo Header HTTP, Header Report-Only ose Etiketa HTML . Shqyrtimi i kësaj politike përditësohet teksa shkruan.
Për të audituar një politikë që e ke tashmë, ngjite te Vlerëso një politikë ekzistuese dhe kliko Vlerëso politikën; Ngarko në redaktues e kopjon në fushat e formularit.
Çfarë bën një Content Security Policy
Një CSP i tregon shfletuesit nga cilat origjina mund të ngarkojë një faqe skripte, stile, imazhe, shkronja, kuadro dhe lidhje. Roli i saj kryesor është të kufizojë cross-site scripting (XSS): edhe nëse një sulmues injekton kod në faqen tënde, një politikë e mirë e pengon skriptin e injektuar të ekzekutohet. Ajo kontrollon gjithashtu kush mund ta ngulë faqen tënde në një kuadër (frame-ancestors), ku mund të dërgohen formularët (form-action) dhe te çfarë mund të tregojë <base> (base-uri).
Direktivat e marrjes si img-src ose font-src bien te default-src kur mungojnë. base-uri, form-action dhe frame-ancestors nuk bien te asnjë rezervë, prandaj shqyrtimi i kërkon në mënyrë të shprehur.
Nonce, hash dhe strict-dynamic
Të lejosh hoste (script-src https://cdn.example.com) duket e sigurt, por shpesh anashkalohet: domenet e mëdha strehojnë pika JSONP dhe biblioteka të vjetra që një sulmues mund t’i ripërdorë. Qasja e rekomanduar nga ekipet e sigurisë së shfletuesve është një CSP strikt: çdo <script> legjitim mbart një nonce të gjeneruar nga serveri për çdo përgjigje, ose lejohet nga hash-i i tij, dhe 'strict-dynamic' i lejon ato skripte të besuara të ngarkojnë skriptet që u duhen. Në këtë rast https: dhe 'unsafe-inline' janë vetëm rezervë për shfletuesit shumë të vjetër; ata modernë i shpërfillin.
Një nonce funksionon vetëm nëse ndryshon në çdo përgjigje dhe është i paparashikueshëm. Ai që fut Shto një nonce është një shembull: serveri ose framework-u yt duhet të gjenerojë nonce-n e vet. Një hash mbulon bajtët e saktë të kodit brenda faqes, prandaj riformatimi i skriptit kërkon një hash të ri.
Header, Report-Only dhe etiketa meta
Dërgoje politikën si header përgjigjeje HTTP sa herë që mundesh. Vendose fillimisht si Content-Security-Policy-Report-Only: shfletuesit raportojnë shkeljet (në konsolë dhe te pika jote, nëse e ke caktuar) pa bllokuar asgjë, kështu që i rregullon faqet para se ta zbatosh. Cilësimet e raportimit shtojnë report-uri për shfletuesit më të vjetër dhe report-to me një header Reporting-Endpoints.
Versioni <meta http-equiv> është i përshtatshëm në strehim statik, por shfletuesit i shpërfillin frame-ancestors, report-uri, report-to dhe sandbox në të, dhe nuk ekziston etiketë meta Report-Only. Mjeti i heq këto direktiva nga etiketa dhe të njofton për to.
Çfarë kontrollon shqyrtimi
Lista Shqyrtimi i kësaj politike shënon shkallën e rrezikut (E lartë, E mesme, E ulët, Informacion) për problemet e zakonshme: 'unsafe-inline' ose 'unsafe-eval' te script-src, shenja joker (*) dhe skema të tëra si https:, mungesa e object-src, base-uri, frame-ancestors ose form-action, fjalë kyçe pa thonjëza, direktiva të panjohura ose të përsëritura dhe burime http://. Çdo mesazh e shpjegon arsyen, ndaj mund ta përdorësh edhe për të mësuar si funksionon CSP.
Gjithçka ndodh në shfletuesin tënd: politikat që ngjit nuk dërgohen askund.
Pyetje të shpeshta
A është problem 'unsafe-inline' te style-src?
Është më pak i rrezikshëm se te script-src dhe shumë i zakonshëm, sepse shumë biblioteka vendosin stile brenda faqes. CSS-ja e injektuar mund ta ndryshojë pamjen e faqes ose të nxjerrë të dhëna, prandaj shqyrtimi e shënon me rrezik të ulët.
A janë të plota hostet e Google Analytics?
Janë shembuj nga udhëzimet e CSP të Google për etiketën Google. Google i rregullon me kalimin e kohës dhe mund të duhen domene rajonale; kontrollo dokumentacionin aktual të Google dhe hiq ato që nuk i përdor. Skripti i vogël gtag.js brenda faqes kërkon gjithashtu një nonce ose hash.
Pse politika ime po më bllokon skriptet e mia brenda faqes?
Sapo vendoset script-src pa 'unsafe-inline', çdo <script> brenda faqes dhe çdo atribut onclick= bllokohet. Zhvendose kodin në një skedar, ose shto një nonce ose hash.
A e zëvendëson një CSP pastrimin e të dhënave të përdoruesit?
Jo. Një CSP është një vijë e dytë mbrojtjeje. Vazhdo të pastrosh daljen dhe të validosh hyrjen; politika e kufizon dëmin kur diçka kalon.
A mund të kem disa politika?
Po: nëse një faqe merr disa header-e CSP, një burim duhet t’i plotësojë të gjitha. Ngjit një politikë në herë te vlerësuesi.
Mjete të ngjashme
- Gjenerues i ridrejtimeve .htaccess Gjenero ridrejtime 301 dhe 302 për .htaccess ose Nginx, detyro HTTPS dhe www, zhvendos një domen dhe rregullo vijën e pjerrët, me kontrolle për cikle.
- Gjenerues i meta tagjeve Gjenerues falas për meta tagjet e titullit, meta description, URL kanonike, robots dhe viewport, me kontrolle gjatësie dhe HTML të escape-uar saktë.
- Gjeneratori i hash Gjenero hash MD5, SHA-1, SHA-256 dhe SHA-512 për tekste ose skedarë të çdo madhësie dhe verifiko checksum-et. Gjithçka funksionon në shfletuesin tënd.
- Gjenerues i robots.txt Krijo një skedar robots.txt të vlefshëm me grupe user-agent, rregulla Allow dhe Disallow, sitemap-e dhe crawl-delay, me kontrolle për gabimet e zakonshme.