Aller au contenu principal

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
}
}
}
OptionDescription
enabledActive ou désactive la CSP. La valeur par défaut est true.
customDéfinit une valeur de CSP entièrement personnalisée. Lorsque cette clé est renseignée, les réglages par source sont ignorés.
<source>-addAjoute une source à une directive existante, par exemple img-src-add.
<source>-removeRetire une source d'une directive existante, par exemple img-src-remove.
<source>Remplace la directive complète, par exemple connect-src.
upgrade-insecure-requestsForce ou désactive l'ajout de upgrade-insecure-requests. Par défaut, Lagoon l'ajoute lorsque Lagoon:PublicUrl commence par https://.
attention

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
}
}
}
info

La règle script-src dépend de la version .NET utilisée par Blazor WebAssembly. En .NET 8, Lagoon utilise wasm-unsafe-eval.