Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

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

http
Content-Security-Policy: upgrade-insecure-requests;

Exemples

Utiliser l'en-tête HTTP

http
Content-Security-Policy: upgrade-insecure-requests;

Utiliser l'élément HTML meta

html
<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).

html
<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.

html
<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 :

html
<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 :

http
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