Paket Spatie/Laravel-CSP obravnava dinamične neplace za vgrajene skripte in sloge, tako da ustvari edinstveno vrednost nonce na zahtevo HTTP in jo samodejno vbrizga v glave vsebinske varnostne politike (CSP) in ustrezne elemente HTML. Tu je podrobna razlaga, kako deluje:
Nonce Generation
- Paket uporablja vmesnik NonCegeNerator, da za vsako zahtevo dinamično ustvari niz nonce.
- Privzeto lahko vnesete svoj lastni razred Nonce, ki vrne edinstven naključni niz. Na primer, lahko se integrirate s sistemom nonce Laravel Vite tako, da ustvarite razred, kot je "Laravelvitenoncegenerator", ki uporablja "vite :: cspnonce ()", da dobi nece, ki ustvari Vite med kompilacijo sredstva.
- Določite svoj razred Nonce Generator v ključu `nonce_genator` konfiguracijske datoteke` csp.php` paketa.
Uporaba NONCE v politikah
- In your CSP policy class (which typically extends `Spatie\Csp\Policies\Basic`), you use methods like `addNonceForDirective(Directive::SCRIPT)` and `addNonceForDirective(Directive::STYLE)` to indicate that a nonce should be added to the `script-src` and `style-src` directives.
- To zagotavlja, da je ustvarjena nonce vključena v glavo CSP za te direktive, kar omogoča vgrajene skripte in sloge, ki izvajajo ustrezni atribut nonce za izvedbo.
vmesna programska oprema in vbrizgavanje glave
- Paket ponuja vmesno programsko opremo (`Spatie \ csp \ addcsPheaders`), ki jo registrirate v svojem jedru HTTP ali na določenih poteh.
- Ta vmesna programska oprema ustvari nonce za zahtevo, uporablja pravilnik o CSP, vključno z direktivami nonce, in doda ustrezne glave CSP v odgovor HTTP.
- Vrednost nonce je skladna znotraj zahteve, tako da lahko v svojih pogledih uporabite direktive rezila, kot so `@nonce` ali pomožne funkcije, kot je` csp_nonce () `, da izstavite atribut nonce na vgrajenih` `ali` oznakah.
Integracija z Laravel Vite
- Pri uporabi Laravel Vite lahko paket uporabi VITE-ovo vgrajeno generacijo prek `vite :: cspnonce ()`.
- Ustvarite lahko razred po meri, ki vrne nonce iz Vite, in zagotovite, da se nonce, ki se uporablja v glavi CSP, ujema z nonce, ki se uporablja za skripte in sloge, ki jih vbrizga Vite.
- To se izogne kršitvam CSP, ki jih povzročajo neusklajenost in omogoča varne vgrajene skripte/sloge v aplikacijah Laravel, ki jih poganja Vite.
Dodatne funkcije
- Paket podpira tudi upodabljanje pravilnikov CSP kot meta oznake (prek direktive o rezilu@@cspmetatag`), kadar ne morete nadzorovati glave HTTP.
- Podpira način samo za testiranje pravilnikov CSP brez blokiranja virov.
- Politike lahko prilagodite za različna okolja (razvoj v primerjavi s proizvodnjo).
Praktične opombe
- Zagotoviti morate, da se nonce izide na vgrajenih skriptah/slogih s pomočjo direktive Blade `@nonce` ali` csp_nonce () `helper; V nasprotnem primeru jih bo brskalnik blokiral.
- Brskalniki, kot je Chrome, lahko odstranijo atribute nece iz skriptnih oznak, ki jih vbrizgajo dinamično, zato natančno uporabite nece in testno vedenje.
- Nonce je naključni niz, pridobljen na zahtevo, zaradi česar so vgrajene skripte/sloge varnejše, saj omogočajo samo tiste, ki imajo pravilen nonce.
Če povzamemo, Spatie/Laravel-Csp dinamično ustvarja ne-že na zahtevo s pomočjo konfiguracijskega nonce generatorja, vključuje to nonce v glave CSP za skripte in sloge ter nudi direktive rezila in pomočnikom, da izdelujejo atribut nonce na vgrajenih elementih. Ta integracija, zlasti pri Laravel Viteu, zagotavlja, da CSP varno dopušča vgradne skripte in sloge, ne da bi uporabili varnost aplikacije, hkrati pa ohranili funkcionalnost [1] [2] [3] [4] [6].
Navedbe:
[1] https://github.com/Spatie/laravel-csp
[2] https://laravel.io/forum/laravel-mox-and-content-security-polic
[3] https://laravel-news.com/package/spatie-laravel-csp
[4] https://stackoverflow.com/questions/75106343/nonce-is-always-empty-when-wen-Spatie-lavel-csp-with-laravel-in-vite-js
[5] https://github.com/Spatie/laravel-csp/discussions/96
[6] https://stackoverflow.com/questions/77459507/how-to-add-csp-nonce-in-inline-style-and-script-by-by-vaue-in-in-laravel-and
[7] https://www.stackhawk.com/blog/laravel-content-security-policy-guide-what-it-is-and-how-to-nable-it/
[8] https://stackoverflow.com/Questions/78864184/enable-nonce-to-lavel-ffactial Packages
[9] https://developer.mozilla.org/en-us/docs/web/http/headers/content-security-policy/script-src