Content Security Policy
Lagoon génère l'en-tête HTTP Content-Security-Policy à partir de l'URL publique de l'application et de la section Lagoon:CSP du fichier appsettings.json.
Configuration appsettings.json
{
"Lagoon": {
"CSP": {
"enabled": true,
"custom": "",
"img-src-add": "https:",
"img-src-remove": "blob:",
"connect-src": "'none'",
"upgrade-insecure-requests": false
}
}
}
| Option | Description |
|---|---|
enabled | Active ou désactive la CSP. La valeur par défaut est true. |
custom | Définit une valeur de CSP entièrement personnalisée. Lorsque cette clé est renseignée, les réglages par source sont ignorés. |
<source>-add | Ajoute une source à une directive existante, par exemple img-src-add. |
<source>-remove | Retire une source d'une directive existante, par exemple img-src-remove. |
<source> | Remplace la directive complète, par exemple connect-src. |
upgrade-insecure-requests | Force ou désactive l'ajout de upgrade-insecure-requests. Par défaut, Lagoon l'ajoute lorsque Lagoon:PublicUrl commence par https://. |
Un remplacement complet comme connect-src: "'none'" peut bloquer des fonctionnalités réseau de l'application. Préférez les suffixes -add et -remove lorsque vous adaptez seulement une règle existante.
Règles CSP par défaut
Pour une application à la racine /, Lagoon génère les directives suivantes en .NET 8.
base-uri 'self';
default-src 'self';
img-src 'self' data: blob:;
frame-src 'self' blob:;
object-src 'none';
script-src 'self' 'wasm-unsafe-eval';
style-src 'self' 'unsafe-inline';
upgrade-insecure-requests;
En environnement Development, Lagoon ajoute les sources nécessaires aux outils locaux :
default-src ... http://localhost:*/ ws://localhost:*/;
Application publiée dans un sous-dossier
Lorsque Lagoon:PublicUrl pointe vers un sous-dossier, Lagoon remplace 'self' par l'URL publique restreinte au sous-dossier.
base-uri https://localhost:5011/draft/;
default-src https://localhost:5011/draft/ wss://localhost:5011/draft/;
img-src https://localhost:5011/draft/ data: blob:;
frame-src https://localhost:5011/draft/ blob:;
object-src 'none';
script-src https://localhost:5011/draft/ 'wasm-unsafe-eval';
style-src https://localhost:5011/draft/ 'unsafe-inline';
upgrade-insecure-requests;
En environnement Development, Lagoon ajoute aussi les sources locales nécessaires au débogage et aux ressources de développement.
default-src ... http://localhost:*/ ws://localhost:*/;
script-src ... https://localhost:5011/;
Adapter une directive
Les suffixes de configuration permettent de modifier les directives sans réécrire toute la CSP.
{
"Lagoon": {
"CSP": {
"img-src-add": "https:",
"img-src-remove": "blob:",
"connect-src-add": "https://api.example.com"
}
}
}
upgrade-insecure-requests
upgrade-insecure-requests indique au navigateur de privilégier les réponses chiffrées et authentifiées. Lagoon ajoute cette directive par défaut lorsque l'URL publique commence par https://.
Pour une application volontairement publiée en HTTP, positionnez explicitement :
{
"Lagoon": {
"CSP": {
"upgrade-insecure-requests": false
}
}
}
La règle script-src dépend de la version .NET utilisée par Blazor WebAssembly. En .NET 8, Lagoon utilise wasm-unsafe-eval.