Wie richte ich eine Inhaltssicherheitsrichtlinie (CSP) in Laravel ein?
Jul 29, 2025 am 01:06 AMErstellen Sie eine Middleware mit PHP Artisan Make: Middleware addCSpheaders und implementieren Sie den CSP-Header in der Handlungsmethode mit einer Richtlinie wie Standard-SRC 'Self'. w?hrend der Vermeidung von "unsicherem Inline" und "unsicherer Eval" in der Produktion; 2. Registrieren Sie die Middleware weltweit im $ Middleware -Array oder wenden Sie sie auf bestimmte Routen oder Gruppen in App/http/kernel.php an; 3.. Passen Sie die Richtlinie anhand der erforderlichen Quellen an, z. B. auf Erlaubnis externer Dom?nen für Analysen oder CDNs, und verwenden Sie Nonces für Inline -Skripte anstelle von unsicheren Richtlinien; 4. Aktivieren Sie optional die Berichterstattung durch Hinzufügen einer Berichtsanweisung und erstellen Sie eine Route zu Protokollverst??en, w?hrend Sie den CSRF-Schutz für diesen Endpunkt deaktivieren. 5. Testen Sie die Richtlinie gründlich, beginnen Sie mit einer strengen Konfiguration und passen Sie sie nach Bedarf an, um Sicherheit und Funktionalit?t auszugleichen, und stellen Sie sicher, dass Ihre Laravel -Anwendung durch eine effektive CSP -Implementierung gegen XSS und Injektionsangriffe geschützt ist.
Das Einrichten einer Inhaltssicherheitsrichtlinie (CSP) in Laravel schützt Ihre Anwendung vor dem Cross-Site-Skript (XSS), der Dateninjektion und anderer clientseitiger Angriffe, indem die Ressourcen (Skripte, Stile, Bilder usw.) einschr?nken k?nnen. Laravel enth?lt nicht standardm??ig CSP, aber Sie k?nnen es effektiv mit Middleware implementieren. So wie.

1. Erstellen Sie eine CSP -Middleware
Beginnen Sie mit einer Middleware, die den Content-Security-Policy
-Antworten den HTTP-Antworten hinzufügt.
Führen Sie diesen handwerklichen Befehl aus:

PHP Artisan Make: Middleware addcSpeaders
?ffnen Sie dann die neu erstellte Datei app/Http/Middleware/AddCspHeaders.php
und ?ndern Sie die handle
-Methode:
<? Php Namespace App \ http \ Middleware; Verschluss verwenden; Klasse addCSpheaders { ?ffentliche Funktion Handle ($ Anfrage, Schlie?ung $ $ Weitere) { $ response = $ next ($ request); // Wenden Sie CSP nur in der Produktion an if (app ()-> Umgebung ('Produktion')) { $ csp = "Standard-src 'self'; script-src 'self' 'unsicherer' 'unsicherer Eval'; style-src 'self' '' unsicherer '; img-src' self 'data' data: https:; font-src 'self'; $ response-> header ('Inhalts-Security-Policy', $ CSP); } $ response return; } }
? HINWEIS: Vermeiden Sie
'unsafe-inline'
und'unsafe-eval'
in der Produktion, wenn m?glich. Verwenden Sie stattdessen Nonces oder Hashes für eine bessere Sicherheit.
2. Registrieren Sie die Middleware
Sie müssen die Middleware registrieren, damit Laravel sie auf Anfragen anwendet.
Option A: Global Middleware (gilt für alle Routen)
Fügen Sie es dem $middleware
-Array in app/Http/Kernel.php
:
geschützt $ Middleware = [ // andere Middleware \ App \ http \ Middleware \ addcSpheaders :: class, ];
Option B: Routenspezifische Middleware
Wenn Sie CSP nur auf bestimmten Routen m?chten, weisen Sie es einer Middleware -Gruppe oder einer einzelnen Route zu.
Fügen Sie es zun?chst einer Gruppe in Kernel.php
hinzu:
geschützte $ middlewaregroups = [ 'Web' => [ // andere Middleware \ App \ http \ Middleware \ addcSpheaders :: class, ], ];
Oder wenden Sie es direkt auf eine Route an:
Route :: get ('/sicher', function () { Rückgabeansicht ('sicher'); })-> Middleware (addCSpheaders :: class);
3.. Passen Sie die CSP -Richtlinie an
Stellen Sie die Richtlinie anhand der Anforderungen Ihrer App an. Zum Beispiel:
Wenn Sie Google Analytics oder CDNs verwenden:
script-src 'self' https://www.google-analytics.com 'unsicherinline'; IMG-Src 'Selbst' https://www.google-analytics.com Daten:;
Wenn Sie Inline -Skripte verwenden (nicht empfohlen), verwenden Sie Nonces:
Generieren Sie eine Nonce pro Anfrage:
$ nonce = base64_encode (Random_Bytes (16));
Dann einstellen:
script-src 'self' 'nonce-'. $ nonce;
Und in Ihren Klingenvorlagen:
<script nonce = "{{$ nonce}}"> console.log ("das ist erlaubt"); </script>
übergeben Sie den Nonce über
view()->share()
oder Middleware.
4. Berichterstattung verwenden (optional)
Sie k?nnen auch die CSP -Berichterstattung einrichten, um Verst??e zu überwachen:
Fügen Sie report-uri
oder report-to
Richtlinie hinzu:
$ csp = "Standard-src 'self'; ...; report-uri /csp-report;";
Erstellen Sie dann eine Route, um Berichte zu behandeln:
Route :: post ('/csp-report', function () { \ LOG :: WARNUNG ('CSP-Versto?:', Request ()-> All ()); Rückgabeantwort ('', 204); })-> ohneMiddleware ([\ app \ http \ Middleware \ verifycsrftoken :: class]);
?? Deaktivieren Sie CSRF für diesen Endpunkt, da CSP-Berichte überquerisch gesendet werden.
Zusammenfassung
- ? Middleware erstellen, um den CSP -Header zu injizieren
- ? Registrieren Sie es in
Kernel.php
oder auf bestimmten Routen - ? Passen Sie Richtlinien anhand Ihrer Verm?genswerte und Dom?nen an
- ? Vermeiden Sie unsichere Praktiken, wenn m?glich
- ? Verwenden Sie die Berichterstattung, um Probleme zu fangen und zu beheben
Bei einem ordnungsgem?? konfigurierten CSP wird Ihre Laravel -App erheblich widerstandsf?higer gegenüber XSS- und Injektionsangriffen. Starten Sie streng, testen Sie gründlich und passen Sie sie nach Bedarf an.
Grunds?tzlich ist es nicht schwer zu errichten - nur eine Middleware und eine sorgf?ltige Richtlinie.
Das obige ist der detaillierte Inhalt vonWie richte ich eine Inhaltssicherheitsrichtlinie (CSP) in Laravel ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen





In Laravel gibt es drei M?glichkeiten, benutzerdefinierte Validierungsregeln hinzuzufügen: Verwenden von Schlie?ungen, Regelklassen und Formularanfragen. 1. Verwenden Sie Verschlüsse, um für die leichte überprüfung geeignet zu sein, z. B. die Verhinderung des Benutzernamens "Admin". 2. Erstellen Sie Regelklassen (z. B. validusernamerule), um komplexe logische und aufrechterhalten zu machen; 3. Integrieren Sie mehrere Regeln in Formularanfragen und verwalten Sie die überprüfungslogik zentral. Gleichzeitig k?nnen Sie Eingabeaufforderungen über benutzerdefinierte Nachrichtenmethoden oder eingehende Fehlermeldungsarrays festlegen, um die Flexibilit?t und Wartbarkeit zu verbessern.

Zu den Kernmethoden für Laravel -Anwendungen zur Implementierung mehrsprachiger Unterstützung geh?ren: Einstellen von Sprachdateien, dynamischem Sprachwechsel, übersetzungs -URL -Routing und Verwaltung von übersetzungsschlüssel in Blade -Vorlagen. Organisieren Sie zun?chst die Zeichenfolgen jeder Sprache in den entsprechenden Ordnern (wie EN, ES, FR) im Verzeichnis /Ressourcen /Lang und definieren Sie den übersetzungsinhalt, indem Sie das assoziative Array zurückgeben. 2. übersetzen Sie den Schlüsselwert über den Helfer -Funktionsaufruf \ _ \ _ () und verwenden Sie App :: setLocale (), um Sitzungs- oder Routing -Parameter zu kombinieren, um das Sprachwechsel zu realisieren. 3. Für übersetzungs -URLs k?nnen Pfade für verschiedene Sprachen durch vorangestellte Routing -Gruppen definiert werden oder Alias ??in Sprachdateien dynamisch zugeordnet werden. 4.. Halten Sie die übersetzungsschlüssel pr?zise und

TOWORKEFEKTIVE Withpivottablessinlaravel, First AccesspivotDatAusing withpivot () orwithtimestamps (), dann updateEntries mit

LaravelProvidesacleanandflexiblewaytosendnotificationsViamultiPhannels-Likeemail, SMS, In-Appalerts und Pushnotifikationen

ServiceProvider ist der Kernmechanismus, der im Laravel -Framework zum Registrieren von Diensten und zur Initialisierungslogik verwendet wird. Sie k?nnen einen benutzerdefinierten ServiceProvider über den handwerklichen Befehl erstellen. 1. Die Registermethode wird verwendet, um Dienste zu binden, Singletonen zu registrieren, Aliase usw. festzulegen, und andere Dienste, die noch nicht geladen wurden, k?nnen nicht aufgerufen werden. 2. Die Boot -Methode wird ausgeführt, nachdem alle Dienste registriert wurden und zur Registrierung von Ereignish?rern, zur Anzeige von Synthesizern, Middleware und einer anderen Logik verwendet wird, die von anderen Diensten abh?ngt. Zu den gemeinsamen Verwendungen geh?ren Bindungsschnittstellen und Implementierungen, Registrieren von Fassaden, Ladekonfigurationen, Registrierung von Befehlszeilenanweisungen und Ansichtskomponenten; Es wird empfohlen, relevante Bindungen an einen ServiceProvider zu zentralisieren, um es zu verwalten und der Registrierung zu achten

Die Abh?ngigkeitsinjektion behandelt automatisch die Klassenabh?ngigkeiten über Servicebeh?lter in Laravel ohne manuelle neue Objekte. Sein Kern ist die Konstruktorinjektion und Methodeninjektion, z. B. automatisch in der Anforderungsinstanz im Controller weitergegeben. Laravel pariert Abh?ngigkeiten durch Typeingabeaufforderungen und erstellt rekursiv die erforderlichen Objekte. Die Bindungsschnittstelle und -implementierung k?nnen vom Dienstanbieter verwendet werden, um die Bind -Methode zu verwenden, oder Singleton, um einen Singleton zu binden. Wenn Sie es verwenden, müssen Sie die Eingabeaufforderungen sicherstellen, Konstruktorkomplikationen vermeiden, Kontextbindungen mit Vorsicht verwenden und automatische Parsingregeln verstehen. Das Beherrschen dieser kann die Code -Flexibilit?t und -wartung verbessern.

Zu den Kernmethoden zum Umgang mit Ausnahmen und Aufzeichnungsfehlern in Laravel -Anwendungen geh?ren: 1. Verwenden Sie die App \ Ausnahmen \ Handler -Klasse, um unberührte Ausnahmen zentral zu verwalten und Ausnahmeinformationen über die Berichtsmethode () wie das Senden von Slack -Benachrichtigungen aufzunehmen oder zu benachrichtigen. 2. Konfigurieren Sie das Protokollsystem mit Monolog, setzen Sie die Protokoll- und Ausgangsmethode in config/logging.php und aktivieren Sie Fehler und über die überstufige Protokolle in der Produktionsumgebung. Gleichzeitig k?nnen detaillierte Ausnahmeinformationen in Bericht () in Kombination mit dem Kontext manuell erfasst werden. A. Passen Sie die Render () -Methode an, um eine einheitliche JSON -Formatfehlerreaktion zurückzugeben, wodurch die Zusammenarbeiteffizienz des vorderen und hinteren Ende der API verbessert wird. Diese Schritte sind

Die Laravel -Leistungsoptimierung kann die Anwendungseffizienz durch vier Kernrichtungen verbessern. 1. Verwenden Sie den Cache -Mechanismus, um doppelte Abfragen zu reduzieren, und speichern Sie die Daten selten über Cache :: Denken Sie daran () und andere Methoden, um die H?ufigkeit des Datenbankzugriffs zu reduzieren. 2. Die Datenbank aus dem Modell optimieren, um Anweisungen abzufragen, N 1 -Abfragen zu vermeiden, Feldabfragen anzugeben, Indizes hinzuzufügen, die Verarbeitung und Lesen von Paging und das Schreiben von Trennungen zu reduzieren und Engp?sse zu reduzieren. 3.. Verwenden Sie zeitaufw?ndige Vorg?nge wie E-Mail-Senden und Dateien exportieren in die asynchrone Warteschlangenverarbeitung, verwenden Sie den Supervisor, um Arbeitnehmer zu verwalten und Wiederholungsmechanismen einzurichten. 4. Verwenden Sie Middleware- und Dienstanbieter vernünftigerweise, um komplexe Logik- und unn?tige Initialisierungscode zu vermeiden und das Laden von Diensten zu verz?gern, um die Start -Effizienz zu verbessern.
