CentralCSP
PolitiquesContent-Security-PolicyDirectives

upgrade-insecure-requests

La directive CSP upgrade-insecure-requests réécrit en HTTPS les URL HTTP non sûres de sous-ressource et de navigation avant leur récupération.

Dernière mise à jour:

La directive upgrade-insecure-requests indique au navigateur de réécrire en https:// les URL http:// non sûres d'une page avant de les récupérer. C'est la manière standard de migrer un site vers HTTPS sans devoir traquer chaque référence HTTP codée en dur, et elle supprime la plupart des avertissements de contenu mixte en une seule ligne.

Lorsque la directive est présente, le navigateur passe le schéma des requêtes de sous-ressource (images, scripts, feuilles de style, polices, frames) et des requêtes de navigation same-origin de http: à https: avant qu'elles ne quittent le navigateur. La requête n'est jamais envoyée en clair. Utilisez la directive comme un outil de transition pour le contenu qui référence encore des URL http://.

Elle ne met pas à niveau les navigations de premier niveau cross-origin (un utilisateur qui clique sur un lien vers la page http:// d'un autre site n'est pas affecté), et elle ne remplace pas HTTP Strict Transport Security (HSTS). HSTS force HTTPS pour toute l'origine au niveau de la connexion et persiste d'une requête à l'autre ; cette directive ne fait que réécrire les URL à l'intérieur du document courant.

Envoyez-la sur tout site HTTPS qui référence encore des URL http:// :

Content-Security-Policy: upgrade-insecure-requests

Chaîne de repli

upgrade-insecure-requests n'a pas de repli. default-src ne la couvre pas, donc la directive ne s'applique que lorsque vous la listez explicitement.

Valeurs

Aucune. C'est une directive drapeau : sa présence active le comportement, et elle ne prend aucune valeur.

Exemples

Une politique de migration courante met à niveau les références tout en rapportant ce que la politique bloque :

Content-Security-Policy:
    default-src 'self';
    upgrade-insecure-requests;
    report-to csp-endpoint

Notes de sécurité

Elle comble les brèches de contenu mixte. Une page HTTPS qui charge un script ou une feuille de style en http:// expose cette ressource à une altération sur le réseau, et un contenu mixte actif peut compromettre toute la page. Mettre ces requêtes à niveau vers HTTPS supprime le segment en clair et l'avertissement.

Contournements et risques connus

La mise à niveau est silencieuse : si une ressource n'a pas de version HTTPS, la requête échoue après la mise à niveau au lieu de retomber en HTTP, donc une ressource réellement disponible uniquement en HTTP cesse de se charger. Elle ne protège pas les navigations de premier niveau cross-origin, et elle n'arrête pas un attaquant qui contrôle la première requête en clair avant toute lecture de politique, ce que traite HSTS.

Vous pouvez confirmer qu'une politique porte la directive avec l'évaluateur CSP.

Recommandation

Content-Security-Policy: upgrade-insecure-requests

Envoyez la directive sur chaque site HTTPS, surtout pendant une migration de HTTP vers HTTPS, conformément aux recommandations OWASP et MDN. Elle ne remplace pas HSTS : conservez Strict-Transport-Security pour épingler l'origine sur HTTPS au niveau de la connexion, et utilisez cette directive pour nettoyer les références http:// dans la page.

Reporting

La mise à niveau réécrit les requêtes au lieu de les bloquer. Pour trouver les pages qui référencent encore des URL non sûres, exécutez en parallèle une politique report-only comme Content-Security-Policy-Report-Only: default-src https:; report-to csp-endpoint ; chaque requête non sûre produit alors un rapport csp-violation sans rien casser.

Prise en charge par les navigateurs

Largement prise en charge sur Chromium, Firefox et Safari.

FAQ

upgrade-insecure-requests remplace-t-elle HSTS ?

Non. upgrade-insecure-requests ne fait que réécrire en https:// les URL http:// du document courant. HSTS force le HTTPS pour toute l'origine au niveau de la connexion et persiste d'une requête à l'autre, et il arrête la première requête en clair avant toute lecture de politique. Conservez les deux. Voir HSTS contre upgrade-insecure-requests.

Que fait upgrade-insecure-requests ?

Elle indique au navigateur de réécrire en https:// les URL de sous-ressources et de navigation same-origin en http:// d'une page avant leur récupération, si bien que la requête ne passe jamais en clair. Elle supprime la plupart des avertissements de contenu mixte en une ligne et reste la façon standard de migrer un site vers HTTPS sans modifier chaque référence codée en dur.

Voir aussi

Sources

On this page