Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Spatie/Laravel-CSP paketi, satır içi komut dosyaları ve stiller için dinamik olmayanları nasıl ele alıyor?


Spatie/Laravel-CSP paketi, satır içi komut dosyaları ve stiller için dinamik olmayanları nasıl ele alıyor?


Spatie/Laravel-CSP paketi, HTTP isteği başına benzersiz bir NonCe değeri üreterek ve otomatik olarak içerik güvenliği ilkesi (CSP) başlıklarına ve ilgili HTML öğelerine enjekte ederek, satır içi komut dosyaları ve stiller için dinamik olmayanları işler. İşte nasıl çalıştığına dair ayrıntılı bir açıklama:

Nonce Nesil

- Paket, her bir istek için dinamik olarak bir nonce dize oluşturmak için bir cregenerator arayüzü kullanır.
- Varsayılan olarak, benzersiz bir rastgele dize döndüren kendi nonce jeneratör sınıfınızı uygulayabilirsiniz. Örneğin, varlık derlemesi sırasında VITE tarafından oluşturulan nonce'yi elde etmek için `vite :: cspnonce () 'kullanan` `LaravelvitenonceGenerator' 'gibi bir sınıf oluşturarak Laravel Vite'ın Nonce sistemiyle entegre olabilirsiniz.
- Paketin `csp.php` yapılandırma dosyasının` none_generator` tuşunda nonce jeneratör sınıfınızı belirtirsiniz.

politikalarda nonces uygulamak

-CSP politika sınıfınızda (tipik olarak `spatie \ csp \ politika \ basic`),` `stil-src '' ve` stil-src 'direktiflerine eklenmesi gerektiğini belirtmek için `AddNonceForDirective (direktif :: script)` ve `addNonceFordectrective (Directive :: Style)' gibi yöntemleri kullanırsınız.
- Bu, oluşturulan nonce'nin bu yönergeler için CSP başlığında dahil edilmesini sağlar ve eşleşen nonce özniteliğini yürütme için taşıyan satır içi komut dosyalarına ve stillere izin verir.

ara katman yazılımı ve başlık enjeksiyonu

- Paket, HTTP çekirdeğinize veya belirli yollara kaydolduğunuz ara katman yazılımı (`spatie \ csp \ addcspheaders`) sağlar.
- Bu ara katman yazılımı, istek için nonce oluşturur, Nonce direktifleri dahil CSP politikasını uygular ve HTTP yanıtına uygun CSP başlıklarını ekler.
- Nonce değeri istek içinde tutarlıdır, böylece `@nonce` veya` CSP_Nonce () 'gibi yardımcı işlevleri kullanabilirsiniz.

Laravel Vite ile Entegrasyon

- Laravel Vite kullanırken, paket Vite'ın yerleşik nonce neslini `Vite :: cspnonce ()` aracılığıyla kullanabilir.
- CSP başlığında kullanılan nonce'nin Vite enjekte edilen komut dosyalarına ve stillerine uygulanan nonce ile eşleşmesini sağlayarak, nonce'yi VITE'den döndüren özel bir nonce jeneratör sınıfı oluşturabilirsiniz.
- Bu, nonce uyumsuzluklarının neden olduğu CSP ihlallerini önler ve Vite-Powered Laravel uygulamalarında güvenli satır içi komut dosyalarına/stillerine izin verir.

Ek Özellikler

- Paket ayrıca HTTP başlıklarını kontrol edemediğinizde CSP politikalarının meta etiketleri olarak (`@cspmetatag` bıçak yönergesi aracılığıyla) oluşturulmasını da destekler.
- Kaynakları engellemeden CSP politikalarını test etmek için yalnızca rapor modunu destekler.
- Farklı ortamlar için politikaları özelleştirebilirsiniz (geliştirme ve üretim).

Pratik Notlar

-@@nonce 'direktifini veya `csp_nonce ()` `yardımcısını kullanan satır içi komut dosyalarında/stillerde çıktı olduğundan emin olmalısınız; Aksi takdirde, tarayıcı bunları engeller.
- Chrome gibi tarayıcılar, dinamik olarak enjekte edilen komut dosyası etiketlerinden nonce özniteliklerini soyabilir, bu nedenle NonCe'yi dikkatli kullanın ve test davranışını kullanır.
- Nonce, istek başına oluşturulan rastgele bir dizedir ve yalnızca doğru komut dosyalarını/stillerini daha güvenli hale getirir.

Özetle, Spatie/Laravel-CSP, yapılandırılabilir bir nonce jeneratörü aracılığıyla istek başına bir nonce olarak dinamik olarak üretir, komut dosyaları ve stiller için CSP başlıklarındaki bu nonce'yi içerir ve bıçak yönergelerini ve yardımcılarına satır içi öğelerde nonce özniteliğini çıktıları sağlar. Bu entegrasyon, özellikle Laravel Vite ile, işlevselliği korurken uygulama güvenliğini artırırken, güvenli olmayan, uygulama güvenliğini artırmadan CSP tarafından güvenli bir şekilde izin verilmesini sağlar [1] [2] [3] [4] [6] [6].

Alıntılar:
[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
[4] https://stackoverflow.com/questions/75106343/nonce-is-dways-empty-wen-using-susing-spatie-laravel-csp-with-with-with-vite-js
[5] https://github.com/spatie/laravel-csp/discussions/96
[6] https://stackoverflow.com/questions/77459507/how-to-add-csp-nce-in-inline-style ve-script enjekte edilmiş-by- --in-in-in-in
[7] https://www.stackhawk.com/blog/laravel-content-security-policy-guide-what-t-s-and-do--etenable-it/
[8] https://stackoverflow.com/questions/78864184/enable-nonce-to-laravel-sofra
[9] https://developer.mozilla.org/en-us/docs/web/http/headers/content-security-policy/script-src