Spatie/Laravel-CSP-paketti käsittelee dynaamisia nonsseja sisäisille skripteille ja tyyleille luomalla ainutlaatuisen non-arvon HTTP-pyyntöä kohden ja injektoimalla sen automaattisesti Content Security Policy (CSP) -otsikoihin ja asiaankuuluviin HTML-elementteihin. Tässä on yksityiskohtainen selitys siitä, miten se toimii:
nonce -sukupolvi
- Paketti käyttää nonCeneraattoriliitäntää luodaan dynaamisesti nonce -merkkijono dynaamisesti jokaiselle pyynnölle.
- Oletuksena voit ottaa käyttöön oman nonce Generator -luokan, joka palauttaa ainutlaatuisen satunnaisen merkkijonon. Voit esimerkiksi integroitua Laravel Vite -järjestelmään luomalla luokan, kuten `LaravelvitenonceGenerator`, joka käyttää` Vite :: cspnonce () `saadaksesi Vite: n tuottaman ei -tuottaman omaisuuden kokoamisen aikana.
- Määrität nonce -generaattoriluokan paketin `csp.php` -määritystiedoston` nonce_generator` -näppäimessä.
Politiikoissa ei
-CSP-käytäntöluokassa (joka tyypillisesti ulottuu `spatitie \ csp \ politiikat \ basic`) käytät menetelmiä, kuten` addnoncefordirektiivistä (direktiivi :: käsikirjoitus) `ja` addnoncefordirektiivinen (direktiivi :: tyyli) `osoittaaksesi, että nnocea tulisi lisätä` komentosarjan src` ja `tyyli-SRC` -direktiiviin.
- Tämä varmistaa, että luotu nonce sisältyy näiden direktiivien CSP -otsikkoon, mikä mahdollistaa sisäiset skriptit ja tyylit, joilla on vastaava ei -attribuutti suorittaa.
Väliohjelmisto ja otsikon injektio
- Paketti tarjoaa väliohjelman (`spatie \ csp \ addcspheaders`), jotka rekisteröidyt HTTP -ytimessäsi tai tietyillä reiteillä.
- Tämä väliohjelmisto tuottaa pyynnön noncea, soveltaa CSP -käytäntöä, mukaan lukien ei -direktiivit, ja lisää asianmukaiset CSP -otsikot HTTP -vastaukseen.
- Ei -arvoinen arvo on yhdenmukainen pyynnöstä, joten voit käyttää terän direktiivejä, kuten `@nonce` tai auttajatoimintoja, kuten` csp_nonce () `näkemyksissäsi tulostaaksesi nonce -attribuutin sisäiseen` `tai` `tunnisteille.
Integraatio Laravel Vite: n kanssa
- Laravel Viteä käytettäessä paketti voi hyödyntää Vite: n sisäänrakennetun sukupolven `Vite :: cspnonce ()`.
- Voit luoda mukautetun nonce-generaattoriluokan, joka palauttaa Nonin Vitestä, varmistaen, että CSP-otsikossa käytetty NONCE vastaa ei-injektoitujen skriptien ja tyylien valaisimiin sovellettavia.
- Tämä välttää CSP-rikkomukset, jotka aiheutuvat epäsuhtaista ja sallii turvalliset skriptit/tyylit Vite-moottorilla olevissa Laravel-sovelluksissa.
Lisäominaisuudet
- Paketti tukee myös CSP -käytäntöjen antamista metatunnisteiksi (`@cspetatag` -terädirektiivin kautta), kun et voi hallita HTTP -otsikoita.
- Se tukee vain raportti-tilaa CSP-käytäntöjen testaamiseksi estämättä resursseja.
- Voit räätälöidä politiikkoja eri ympäristöille (kehitys vs tuotanto).
Käytännölliset muistiinpanot
- Sinun on varmistettava, että nonce on tulostettu inline -skripteihin/tyyleihin Blade `@nonce` -direktiivin tai` csp_nonce () `Helper; Muuten selain estää ne.
- Chromen kaltaiset selaimet voivat poistaa dynaamisesti injektoiduista komentosarjoista, joten käytä huolellisesti ja testata käyttäytymistä.
- Nonce on satunnainen merkkijono, joka on luotu pyyntöä kohden, mikä tekee skripteistä/tyyleistä turvallisemman sallimalla vain ne, joilla on oikea nonce, suorittaa.
Yhteenvetona voidaan todeta, että Spatie/Laravel-CSP tuottaa dynaamisesti ei-pyynnön konfiguroitavan nonce-generaattorin kautta, sisältää tämän skripttien ja tyylien CSP-otsikoissa ja tarjoaa terädirektiivejä ja auttajia tulostamaan nonce-määritteen inline-elementteihin. Tämä integrointi, etenkin Laravel Vite: n kanssa, varmistaa, että CSP on sallivat inline-skriptit ja tyylit turvallisesti käyttämättä vaarallista INLINE: tä, mikä parantaa sovellusturvallisuutta säilyttäen toiminnallisuudet [1] [2] [3] [4] [6].
Viittaukset:
[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
.
.
.
[9] https://developer.mozilla.org/en-us/docs/web/http/headers/content-security-policy/script-src