SPATIE/LARAVEL-CSP pakete apstrādā dinamiskas noninas inline skriptiem un stiliem, ģenerējot unikālu Nonce vērtību uz vienu HTTP pieprasījumu un automātiski to ievadot satura drošības politikas (CSP) galvenēs un attiecīgajos HTML elementos. Šeit ir detalizēts skaidrojums, kā tas darbojas:
Nonce paaudze
- Komplektā tiek izmantots neģeneratora interfeiss, lai katram pieprasījumam dinamiski ģenerētu nece virkni.
- Pēc noklusējuma jūs varat ieviest savu Nonce ģeneratora klasi, kas atgriež unikālu izlases virkni. Piemēram, jūs varat integrēties ar Laravel Vite's Nonce sistēmu, izveidojot tādu klasi kā `laravelvitenoncegenerator`, kas izmanto` vite :: cspnonce (), lai iegūtu NONCE, ko rada Vite aktīvu kompilācijas laikā.
- Packeta konfigurācijas faila atslēgā “Nonce_Generator” jūs norādāt savu Nonce ģeneratora klasi.
Politikās nelieto nelieti
-Jūsu CSP politikas klasē (kas parasti paplašina `Spatie \ CSP \ Politicies \ Basic`), jūs izmantojat tādas metodes kā` AddnonceFordirective (direktīva :: skripts) `un` addnoncefordirective (direktīva: stils) `norādīt, ka nece ir jāpievieno“ Scripti-src `un` stilam-Src`.
- Tas nodrošina, ka ģenerētais NONCE ir iekļauts šo direktīvu CSP galvenē, ļaujot izpildīt inline skriptus un stilus, kas atbilst atbilstošajam Nonce atribūtam.
starpprogrammatūra un galvenes injekcija
- Pakete nodrošina starpprogrammatūru (`Spatie \ CSP \ addcspheaders`), kuru reģistrējat savā HTTP kodolā vai noteiktos maršrutos.
- Šī starpprogrammatūra ģenerē pieprasījuma nece, piemēro CSP politiku, ieskaitot Nonce direktīvas, un HTTP atbildei pievieno atbilstošās CSP galvenes.
- NonCE vērtība ir konsekventa pieprasījumā, tāpēc jūs varat izmantot asmeņu direktīvas, piemēram, `@Nonce`, vai palīgu funkcijas, piemēram,` csp_nonce () `jūsu skatījumos, lai izvadītu Nonce atribūtu uz inline` `vai` `tagiem.
integrācija ar Laravel Vite
- Izmantojot Laravel Vite, pakete var izmantot Vite iebūvēto Nonce paaudzi, izmantojot `vite :: cspnonce ()`.
- Jūs varat izveidot pielāgotu Nonce ģeneratora klasi, kas atgriež Nonce no VITE, nodrošinot, ka CSP galvenē izmantotais Nonce atbilst Nonce, kas tiek izmantots VITE iesmidzinātajiem skriptiem un stiliem.
- Tas ļauj izvairīties no CSP pārkāpumiem, ko izraisa neatbilstības, un ļauj nodrošināt drošus inline skriptus/stilus ar Vite darbināmām Laravel lietotnēm.
Papildu funkcijas
- Komplekts atbalsta arī CSP politikas renderēšanu kā meta tagus (izmantojot `@cspmetatag` Blade direktīvu), kad nevarat kontrolēt HTTP galvenes.
- Tas atbalsta tikai ziņojuma režīmu CSP politikas pārbaudei, bloķējot resursus.
- Jūs varat pielāgot politiku dažādām vidēm (attīstība pret ražošanu).
Praktiskas piezīmes
- Jums jāpārliecinās, ka NONCE tiek izvadīts uz inline skriptiem/stiliem, izmantojot asmeni `@Nonce` direktīvu vai` csp_nonce () `palīgu; Pretējā gadījumā pārlūkprogramma tos bloķēs.
- Pārlūkprogrammas, piemēram, Chrome, var noņemt dinamiski injicētu skriptu tagu atribūtus, tāpēc uzmanīgi izmantojiet NONCE un testa izturēšanos.
- Nonce ir nejauša virkne, kas ģenerēta katram pieprasījumam, padarot inline skriptus/stilus drošāku, ļaujot izpildīt tikai tos, kuriem ir pareiza Nonce.
Rezumējot, Spatie/Laravel-CSP dinamiski ģenerē nece vienam pieprasījumam, izmantojot konfigurējamu NonCE ģeneratoru, ietver šo NECE CSP galvenes skriptiem un stiliem, kā arī nodrošina asmeņu direktīvas un palīgus, lai izvadītu Nonce atribūtu inline elementiem. Šī integrācija, it īpaši ar Laravel Vite, nodrošina, ka CSP droši atļauj inline skriptus un stilus, neizmantojot nedrošu innlu, uzlabojot lietojumprogrammu drošību, saglabājot funkcionalitāti [1] [2] [3] [4] [6].
Atsauces:
[1] https://github.com/spatie/laravel-csp
[2] https://laravel.io/forum/laravel-mix-and-content-security-policy
[3] https://laravel-news.com/package/spatie-laravel-csp
.
[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 ineced-by-vue-in-a-laravel-and
[7] https://www.stackhawk.com/blog/laravel-content-security-policy-guide-what-it-is-and-how-to-enable-it/
[8] https://stackoverflow.com/questions/78864184/enable-nonce-to-laravel-official-packages
[9] https://developer.mozilla.org/en-us/docs/web/http/headers/content-security-policy/script-src