CSP: upgrade-insecure-requests
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 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.
Note : La directive upgrade-insecure-requests
est évaluée avant la directive block-all-mixed-content
et si cette elle est définie, cette dernière est effectivement ignorée. Il est recommendé de ne définir que l'une des deux directives mais non les deux, à moins que vous souhaitiez forcer HTTPS sur les anciens navigateurs qui ne le font pas après une redirection vers HTTP.
The upgrade-insecure-requests
directive will not ensure that users visiting your site via links on third-party sites will be upgraded to HTTPS for the top-level navigation and thus does not replace the Strict-Transport-Security
(HSTS) header, which should still be set with an appropriate max-age
to ensure that users are not subject to SSL stripping attacks.
Syntaxe
Content-Security-Policy: upgrade-insecure-requests;
Exemples
Soit cet en-tête CSP :
Content-Security-Policy: upgrade-insecure-requests;
Et cette balise meta :
<meta
http-equiv="Content-Security-Policy"
content="upgrade-insecure-requests" />
Avec cet en-tête défini sur le domaine example.com voulant migrer d'HTTP à HTTPS, les requêtes pour des ressources non sécurisées et non navigationnelles sont automatiquement converties (qu'elles soient internes ou externes).
<img src="http://example.com/image.png" />
<img src="http://not-example.com/image.png" />
Ces URL seront récrites avant que la requête soit envoyée, signifiant qu'aucune requête non sécurisée ne sera envoyée. Notez que si la ressource demandée n'est pas actuellement disponible via HTTPS, la requête échouera sans se rabattre sur HTTP.
<img src="https://example.com/image.png" />
<img src="https://not-example.com/image.png" />
Les conversions navigationnelles vers des ressources externes amènent un risque significatif de dysfonctionnement étant donné que des requêtes peuvent n'être pas converties, par exemple celles-ci :
<a href="https://example.com/">Home</a>
<a href="http://not-example.com/">Home</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
Specification |
---|
Upgrade Insecure Requests # delivery |
Compatibilité des navigateurs
BCD tables only load in the browser