A Spatie/Laravel-CSP csomag a dinamikus nonseit kezeli az inline szkriptek és stílusok számára, ha egy egyedi nonce értéket generál HTTP kérésenként, és automatikusan beilleszti azt a tartalombiztonsági házirend (CSP) fejléceibe és a releváns HTML elemekbe. Itt található egy részletes magyarázat arról, hogyan működik:
nonce generáció
- A csomag nemcegenerátor felületet használ az egyes kérésekhez dinamikusan dinamikusan generálva egy nonce karakterláncot.
- Alapértelmezés szerint megvalósíthatja saját Nonce Generator osztályát, amely egy egyedi véletlenszerű karakterláncot ad vissza. Például integrálhat a Laravel Vite NonCe rendszerével egy olyan osztály létrehozásával, mint például a „LaravelvitenonCegenerator”, amely a „Vite :: Cspnonce ()” -t használja, hogy a VITE által az eszköz összeállításának során generált nonce -t megkapja.
- Ön megadja a Nonce Generator osztályát a csomag `CSP.PhP` konfigurációs fájljának` nonce_generator` kulcsában.
Nonces alkalmazása a politikákban
-A CSP-politikai osztályban (amely általában a „Spatie \ CSP \ Politikák \ Basic” -et kiterjeszti, olyan módszereket használ, mint a „AddNonceFordeRective (irányelv :: Script)` és a „AddNoncefordirective (irányelv :: Stílus)` A nonce-t hozzá kell adni a „Script-SRC” és a „Style-SRC” irányelvekhez.
- Ez biztosítja, hogy a generált nonce bekerüljön a CSP fejlécbe ezen irányelvekhez, lehetővé téve a beépített szkripteket és stílusokat, amelyek a megfelelő Nonce attribútumot hordozzák a végrehajtáshoz.
Közepes szoftver és fejléc injekció
- A csomag köztes szoftvert (`Spatie \ CSP \ addcsPheaders") biztosít, amelyet regisztrál a HTTP kernelben vagy meghatározott útvonalakon.
- Ez a köztes szoftver generálja a NONCE -t a kérelemhez, alkalmazza a CSP -politikát, beleértve a NONCE irányelveket, és hozzáadja a megfelelő CSP fejléceket a HTTP válaszhoz.
- A nonce -érték következetes a kérésen belül, így használhat olyan penge -irányelveket, mint a `@nonce" vagy a helper funkciók, mint például a `csp_nonce ()` nézeteiben, hogy a nonce attribútumot az inline `` `` címkéken adják ki.
Integráció a Laravel Vite -vel
- A Laravel Vite használatakor a csomag kihasználhatja a Vite beépített nonce generációját a „Vite :: Cspnonce ()” segítségével.
- Készíthet egy egyedi nonce generátor osztályt, amely visszaadja a nonce-t a Vite-től, biztosítva, hogy a CSP fejlécben használt nonce megfeleljen a Vite-injektált szkriptekhez és stílusokhoz alkalmazott nonce-hez.
- Ez elkerüli a CSP megsértését, amelyet a NonCE eltérések okoznak, és lehetővé teszik a biztonságos beillesztési szkripteket/stílusokat a Vite-alapú Laravel alkalmazásokban.
További funkciók
- A csomag támogatja a CSP -politikák metacímkékként történő megjelenítését (a `@CSPMetatag` penge irányelven keresztül), ha nem tudja ellenőrizni a HTTP fejléceket.
- Támogatja a CSP politikáinak csak a jelentések módját az erőforrások blokkolása nélkül.
- Testreszabhatja a különböző környezetek politikáját (fejlesztés vs termelés).
Gyakorlati jegyzetek
. Ellenkező esetben a böngésző blokkolja őket.
- Az olyan böngészők, mint a Chrome, a nonce attribútumokat dinamikusan befecskendezett szkriptcímkékből szüntethetik meg, tehát gondosan használja a nonce -t és a teszt viselkedését.
- A NONCE egy véletlenszerű karakterlánc, amelyet kérésenként generálnak, és biztonságosabbá teszi az inline szkripteket/stílusokat, mivel csak a megfelelő NNCE -vel rendelkezők végrehajtását lehetővé teszik.
Összefoglalva: a Spatie/Laravel-CSP dinamikusan nem egy kérésenkénti nonce-t generál egy konfigurálható nonce generátoron keresztül, magában foglalja ezt a nonce-t a CSP fejléceiben a szkriptek és stílusok számára, és pengék irányelveket és segítőket biztosít a nonce attribútum kiadására az inline elemeken. Ez az integráció, különösen a Laravel Vite-vel, biztosítja, hogy a CSP biztonságosan engedélyezze a beillesztési szkripteket és stílusokat anélkül, hogy nem biztonságos in-line használata, javítja az alkalmazásbiztonságot, miközben fenntartja a funkcionalitást [1] [2] [3] [4] [6].
Idézetek:
[1] https://github.com/spatie/laravel-Csp
[2] https://laravel.io/forum/laravel-mix-andentent-security-policy
[3] https://laravel-news.com/package/spatie-laravel-csp
[4] https://stackoverflow.com/questions/75106343/nonce-is-always-mppy-when-using-patie-laravel-csp-laravel-and-vite-js
[5] https://github.com/spatie/laravel-csp/discussions/96
[6] https://stackoverflow.com/questions/77459507/how-to-add-csp-nonce-inin-inline-dyle-and-script-injected-by-vue-in-a-laravel-and
[7] https://www.stackhawk.com/blog/laravel-content-security-policy-guide-what-it-and-and-how-to-enable-it/
[8] https://stackoverflow.com/questions/78864184/enable-nonce-to-laravel- és--ptacial-packages
[9] https://developer.mozilla.org/en-us/docs/web/http/headers/content-security-policy/script-src