Corriger le contenu mixte

Jo-el van Bergen
Jo-el van Bergen

La compatibilité avec le protocole HTTPS pour votre site Web est une étape importante pour protéger votre site et vos utilisateurs contre les attaques. Toutefois, un contenu mixte peut rendre cette protection inutile. Les navigateurs bloquent les contenus mixtes de plus en plus peu sécurisés, comme expliqué dans la section Qu'est-ce que le contenu mixte ?

Dans ce guide, nous allons vous présenter des techniques et des outils permettant de résoudre les problèmes de contenu mixte existants et d'éviter que de nouveaux problèmes se produisent.

Rechercher du contenu mixte en visitant votre site

Lorsque vous consultez une page HTTPS dans Google Chrome, le navigateur vous signale la présence de contenu mixte en tant qu'erreurs et avertissements dans la console JavaScript.

Dans la section Qu'est-ce qu'un contenu mixte ?, vous trouverez plusieurs exemples et découvrez comment les problèmes sont signalés dans les outils pour les développeurs Chrome.

L'exemple de contenu mixte passif renvoie les avertissements suivants. Si le navigateur parvient à trouver le contenu à une URL https, il le met automatiquement à jour, puis un message s'affiche.

Outils pour les développeurs Chrome affichant les avertissements affichés lorsque du contenu mixte est détecté et mis à niveau

Le contenu mixte actif est bloqué et affiche un avertissement.

Outils pour les développeurs Chrome affichant les avertissements affichés lorsque le contenu mixte actif est bloqué

Si vous trouvez des avertissements de ce type pour les URL http:// de votre site, vous devez les corriger dans le code source de votre site. Il est utile de dresser la liste de ces URL, ainsi que de la page sur laquelle vous les avez trouvées, pour les corriger.

Identifier du contenu mixte sur votre site

Vous pouvez rechercher du contenu mixte directement dans votre code source. Recherchez http:// dans le code source et recherchez les balises qui incluent des attributs d'URL HTTP. Notez qu'avoir http:// dans l'attribut href des balises d'ancrage (<a>) n'est souvent pas un problème de contenu mixte. Nous aborderons quelques exceptions notables plus loin.

Si votre site est publié à l'aide d'un système de gestion de contenu, il est possible que des liens vers des URL non sécurisées soient insérés lors de la publication des pages. Par exemple, les images peuvent être incluses avec une URL complète plutôt qu'un chemin d'accès relatif. Vous devrez les identifier et les corriger dans le contenu du CMS.

Corriger le contenu mixte

Une fois que vous avez trouvé du contenu mixte dans le code source de votre site, procédez comme suit pour le résoudre.

Si vous recevez un message de la console indiquant qu'une requête de ressource a été automatiquement mise à niveau de HTTP vers HTTPS, vous pouvez remplacer en toute sécurité l'URL http:// de la ressource de votre code par https://. Vous pouvez également vérifier si une ressource est disponible de manière sécurisée en remplaçant http:// par https:// dans la barre d'adresse du navigateur et en essayant d'ouvrir l'URL dans un onglet du navigateur.

Si la ressource n'est pas disponible via https://, envisagez l'une des options suivantes:

  • Incluez la ressource d'un autre hôte, le cas échéant.
  • Téléchargez et hébergez directement le contenu sur votre site, si la loi vous y autorise.
  • Excluez complètement la ressource de votre site.

Une fois le problème résolu, affichez la page sur laquelle vous avez constaté l'erreur et vérifiez qu'elle n'apparaît plus.

Méfiez-vous de l'utilisation de tags non standards

Méfiez-vous de l'utilisation de balises non standards sur votre site. Par exemple, les URL de balises d'ancrage (<a>) n'entraînent pas d'erreurs de contenu mixte, car elles amènent le navigateur à accéder à une nouvelle page. Cela signifie qu'ils n'ont généralement pas besoin d'être corrigés. Toutefois, certains scripts de galerie d'images ignorent la fonctionnalité de la balise <a> et chargent la ressource HTTP spécifiée par l'attribut href dans un affichage Lightbox sur la page, ce qui entraîne un problème de contenu mixte.

Gérer le contenu mixte à grande échelle

Les étapes manuelles ci-dessus fonctionnent bien pour les sites Web de petite taille. Toutefois, pour les sites Web volumineux ou avec de nombreuses équipes de développement distinctes, il peut être difficile de suivre l'intégralité du contenu chargé. Pour vous aider dans cette tâche, vous pouvez utiliser une stratégie de sécurité du contenu pour indiquer au navigateur de vous avertir en cas de contenu mixte et vous assurer que vos pages ne chargent jamais de ressources non sécurisées de manière inattendue.

Règle de sécurité du contenu

La Content Security Policy (CSP) est une fonctionnalité de navigateur polyvalente qui vous permet de gérer du contenu mixte à grande échelle. Le mécanisme de création de rapports de CSP peut être utilisé pour suivre le contenu mixte sur votre site et fournir des règles d'application pour protéger les utilisateurs en mettant à niveau ou en bloquant le contenu mixte.

Vous pouvez activer ces fonctionnalités pour une page en incluant l'en-tête Content-Security-Policy ou Content-Security-Policy-Report-Only dans la réponse envoyée par votre serveur. Vous pouvez également définir Content-Security-Policy (mais pas Content-Security-Policy-Report-Only) à l'aide d'une balise <meta> dans la section <head> de votre page.

Rechercher du contenu mixte avec une stratégie Content Security Policy

Vous pouvez utiliser la stratégie de sécurité du contenu pour collecter des rapports sur le contenu mixte sur votre site. Pour activer cette fonctionnalité, définissez la directive Content-Security-Policy-Report-Only en l'ajoutant en tant qu'en-tête de réponse pour votre site.

En-tête de réponse:

Content-Security-Policy-Report-Only: default-src https: 'unsafe-inline' 'unsafe-eval'; report-uri https://example.com/reportingEndpoint

Chaque fois qu'un utilisateur consulte une page de votre site, son navigateur envoie à https://example.com/reportingEndpoint des rapports au format JSON concernant tout ce qui ne respecte pas les règles relatives à la sécurité du contenu. Dans ce cas, chaque fois qu'une sous-ressource est chargée via HTTP, un rapport est envoyé. Ces rapports incluent l'URL de la page sur laquelle le non-respect des règles s'est produit et l'URL de la sous-ressource qui l'a enfreinte. Si vous configurez votre point de terminaison de création de rapports pour consigner ces rapports, vous pouvez suivre le contenu mixte sur votre site sans accéder à chaque page vous-même.

Les deux mises en garde suivantes sont les suivantes:

  • Les utilisateurs doivent accéder à votre page dans un navigateur qui comprend l'en-tête CSP. Cela est vrai pour la plupart des navigateurs récents.
  • Vous ne recevez des rapports que pour les pages visitées par vos utilisateurs. Par conséquent, si certaines de vos pages n'enregistrent pas beaucoup de trafic, vous devrez peut-être attendre un certain temps avant d'obtenir des rapports pour l'ensemble de votre site.

Le guide Règle sur la sécurité du contenu contient plus d'informations et un exemple de point de terminaison.

Alternatives à la création de rapports avec CSP

Si votre site est hébergé pour vous par une plate-forme telle que Blogger, il est possible que vous n'ayez pas accès à la modification des en-têtes ni à l'ajout de CSP. À la place, vous pouvez utiliser un robot d'exploration de sites Web pour détecter les problèmes potentiels sur votre site, tels que HTTPSChecker ou l'analyse de contenu mixte.

Mettre à niveau des requêtes non sécurisées

Navigateurs pris en charge

  • 44
  • 17
  • 48
  • 10.1

Source

Les navigateurs commencent à se mettre à niveau et à bloquer les requêtes non sécurisées. Vous pouvez forcer la mise à niveau ou le blocage automatique de ces éléments à l'aide d'instructions CSP.

La directive CSP upgrade-insecure-requests indique au navigateur de mettre à niveau les URL non sécurisées avant d'envoyer des requêtes réseau.

Par exemple, si une page contient une balise d'image avec une URL HTTP telle que <img src="http://example.com/image.jpg">

À la place, le navigateur envoie une requête sécurisée pour https://example.com/image.jpg, évitant ainsi l'accès à un contenu mixte.

Vous pouvez activer ce comportement en envoyant un en-tête Content-Security-Policy avec cette directive:

Content-Security-Policy: upgrade-insecure-requests

Vous pouvez également intégrer la même directive dans la section <head> du document à l'aide d'un élément <meta>:

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

Comme pour la mise à niveau automatique du navigateur, si la ressource n'est pas disponible via HTTPS, la requête mise à niveau échoue et la ressource n'est pas chargée. Cela permet de préserver la sécurité de votre page. La directive upgrade-insecure-requests va au-delà de la mise à niveau automatique du navigateur, en essayant de mettre à niveau les requêtes, ce qui n'est pas le cas actuellement.

L'instruction upgrade-insecure-requests se transforme en documents <iframe> en cascade, ce qui garantit la protection de l'ensemble de la page.