Content-Security-Policy : directive upgrade-insecure-requests
Baseline
Large disponibilité
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis avril 2018.
La directive HTTP Content-Security-Policy (CSP) upgrade-insecure-requests informe l'agent utilisateur de traiter toutes les URL non sécurisées d'un site (servies avec HTTP) comme si elles avaient été remplacées par des URL sécurisées (servies avec HTTPS). Cette directive est prévue pour les sites web ayant un grand nombre d'URL non sécurisées héritées du passé et qui ont besoin d'être récrites.
La directive upgrade-insecure-requests ne garantit pas que les utilisateur·ice·s accédant à votre site par le biais de liens sur des sites tiers verront leur connexion basculer vers HTTPS pour la navigation de premier niveau, et ne remplace donc pas l'en-tête Strict-Transport-Security (HSTS), qui doit toujours être définie avec une valeur max-age appropriée afin de garantir que les utilisateur·ice·s ne soient pas exposés à des attaques de mise à nu du SSL.
Syntaxe
Content-Security-Policy: upgrade-insecure-requests;
Exemples
Utiliser l'en-tête HTTP
Content-Security-Policy: upgrade-insecure-requests;
Utiliser l'élément HTML meta
<meta
http-equiv="Content-Security-Policy"
content="upgrade-insecure-requests" />
Avec cet en-tête défini sur le domaine exemple.com souhaitant migrer de HTTP vers HTTPS, les requêtes pour des ressources non sécurisées et qui ne peuvent pas avoir de navigation sécurisée sont automatiquement converties (qu'elles soient internes ou externes).
<img src="http://exemple.com/image.png" />
<img src="http://hors-exemple.com/image.png" />
Ces URL seront réécrites avant que la requête ne soit effectuée, ce qui signifie qu'aucune requête non sécurisée n'atteindra le réseau. Notez que, si la ressource demandée n'est pas réellement disponible par HTTPS, la requête échouera sans aucun retour à HTTP.
<img src="https://exemple.com/image.png" />
<img src="https://hors-exemple.com/image.png" />
Les mises à niveau de navigation vers des ressources tierces présentent un potentiel de rupture beaucoup plus élevé, elles ne sont donc pas mises à niveau :
<a href="https://exemple.com/">Accueil</a>
<a href="http://hors-exemple.com/">Accueil</a>
Identifier des requêtes non sécurisées
À l'aide de l'en-tête Content-Security-Policy-Report-Only et de la directive report-uri, vous pouvez mettre en place une stratégie de rapportage de violations sans bloquage conjointement à une stratégie de conversion comme :
Content-Security-Policy: upgrade-insecure-requests; default-src https:
Content-Security-Policy-Report-Only: default-src https:; report-uri /endpoint
De cette manière, vous convertirez toujours les requêtes non sécurisées sur votre site sécurisé, mais la stratégie de rapportage identifiera les requêtes non sécurisées et les rapportera à l'adresse fournie.
Spécifications
| Spécification |
|---|
| Upgrade Insecure Requests # delivery |
Compatibilité des navigateurs
Voir aussi
- L'en-tête
Content-Security-Policy - L'en-tête
Upgrade-Insecure-Requests - L'en-tête
Strict-Transport-Security(HSTS) - La directive CSP
block-all-mixed-content - Contenu mixte