Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Cum gestionează pachetul SPATIE/Laravel-CSP non-le dinamic pentru scripturi și stiluri în linie


Cum gestionează pachetul SPATIE/Laravel-CSP non-le dinamic pentru scripturi și stiluri în linie


Pachetul Spatie/Laravel-CSP gestionează non-uri dinamice pentru scripturi și stiluri în linie, prin generarea unei valori nonce unice pe solicitare HTTP și injectând-o automat în anteturile Politicii de Securitate a Conținutului (CSP) și elemente HTML relevante. Iată o explicație detaliată a modului în care funcționează:

Generarea nonce

- Pachetul folosește o interfață noncegenerator pentru a genera dinamic un șir nonce pentru fiecare solicitare.
- În mod implicit, puteți implementa propria clasă de generator nonce care returnează un șir unic aleatoriu. De exemplu, vă puteți integra cu sistemul nonce al Laravel Vite prin crearea unei clase precum `LaravelVitenonceGenerator`, care folosește` Vite :: CSPNonce () `pentru a obține nonce -ul generat de Vite în timpul compilării activelor.
- Specificați clasa dvs. de generator nonce în cheia `nonce_generator` a fișierului de configurare` csp.php` al pachetului.

aplicând nonces în politici

-În clasa dvs. de politici CSP (care, de obicei, extinde `spatie \ csp \ Politics \ Basic`), utilizați metode precum` addnoncefordirective (Directiva :: Script) `și` addnoncefordirective (Directiva :: Style) `pentru a indica faptul că o nonce ar trebui să fie adăugată la„ script-src` și `style-src”.
- Acest lucru asigură că nonce -ul generat este inclus în antetul CSP pentru aceste directive, permițând scripturi și stiluri în linie care poartă atributul nonce potrivit pentru a executa.

Middleware și injecție cu antet

- Pachetul oferă middleware (`spatie \ csp \ addcSpheaders`) pe care le înregistrați în kernel -ul dvs. HTTP sau pe rute specifice.
- Acest middleware generează nonce pentru cerere, aplică politica CSP, inclusiv directivele nonce și adaugă anteturile CSP corespunzătoare la răspunsul HTTP.
- Valoarea nonce este consecventă în cadrul solicitării, astfel încât puteți utiliza directive la Blade precum `@nonce` sau funcții de ajutor, cum ar fi` csp_nonce () `în vizualizările dvs. pentru a scoate atributul nonce pe etichete inline` `sau` `.

Integrare cu Laravel Vite

- Când utilizați Laravel Vite, pachetul poate folosi generația de nonce încorporată a lui Vite prin `Vite :: cspnonce ()`.
- Puteți crea o clasă de generator nonce personalizată care returnează nonce-ul de la Vite, asigurându-vă că nonce-ul utilizat în antetul CSP se potrivește cu nonce-ul aplicat scripturilor și stilurilor injectate de Vite.
- Acest lucru evită încălcările CSP cauzate de nepotriviri nonce și permite scripturi/stiluri în linie sigure în aplicațiile Laravel cu Vite.

Caracteristici suplimentare

- Pachetul acceptă, de asemenea, redarea politicilor CSP ca meta -tag -uri (prin intermediul directivei@@cspmetatag` lame) atunci când nu puteți controla anteturile HTTP.
- Suportă modul numai în raport pentru testarea politicilor CSP fără a bloca resursele.
- Puteți personaliza politicile pentru diferite medii (dezvoltare vs producție).

Note practice

- Trebuie să vă asigurați că nonce -ul este ieșit pe scripturi/stiluri inline folosind Directiva Blade `@nonce` sau` csp_nonce () `helper; În caz contrar, browserul le va bloca.
- Browsere precum Chrome pot elimina atributele nonce din etichetele de script injectate dinamic, așa că utilizați cu atenție nonce și comportamentul de testare.
- Nonce -ul este un șir aleatoriu generat pe cerere, ceea ce face ca scripturi/stiluri în linie să fie mai sigure, permițând doar celor cu nonce corect să se execute.

În rezumat, Spatie/Laravel-CSP generează dinamic o nonce pe cerere printr-un generator nonce configurabil, include acest nonce în anteturile CSP pentru scripturi și stiluri și oferă directive lamă și ajutoare pentru a scoate atributul nonce pe elementele inline. Această integrare, în special cu Laravel Vite, asigură că scripturile și stilurile inline sunt permise în siguranță de către CSP fără a utiliza o linie nesigură, îmbunătățind securitatea aplicației în timp ce mențineți funcționalitatea [1] [2] [3] [4] [6].

Citări:
[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-innline-style-and-cript-injected-fy-vue-in-a-laravel-și
[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-llavel-oficial-packages
[9] https://developer.mozilla.org/en-us/docs/web/http/headers/content-security-policy/script-src