CentralCSP
PolitiquesContent-Security-PolicyDirectives

font-src

La directive CSP font-src contrôle la provenance des polices web, les fichiers de police demandés par les règles CSS font-face.

Dernière mise à jour:

La directive font-src contrôle la provenance des polices sous une politique de sécurité du contenu (Content Security Policy, CSP). Elle régit les fichiers de police demandés par les règles CSS @font-face, donc elle décide depuis quelles origines, quels schemes et quelles données inline le navigateur ira chercher une police.

Une politique minimale sûre pour cette directive:

Content-Security-Policy: font-src 'self' https://fonts.gstatic.com

Chaîne de repli

font-src se replie sur default-src. Si vous ne définissez pas font-src, les polices sont régies par ce que default-src autorise. Si ni l'une ni l'autre n'est présente, les polices se chargent depuis n'importe où.

Valeurs

font-src accepte une liste de sources séparées par des espaces combinant sources mots-clés, host sources et scheme sources:

ValeurStatutDescription
'none'✅ BonBloque tous les chargements de polices; la page retombe sur les polices système.
'self'✅ BonPolices de l'origine de la page uniquement.
fonts.gstatic.com✅ BonUn host de polices ou un CDN nommé.
https:✅ BonN'importe quelle origine HTTPS. Large; préférez des hosts nommés.
data:✅ BonURI data: inline (polices d'icônes, fontes embarquées). Une police ne peut pas s'exécuter.
*❌ RisquéN'importe quel host peut recevoir des requêtes de polices, un canal de requêtes dissimulé. Ne correspond jamais à data:.

Les nonces et les hashes ne s'appliquent pas aux polices.

Exemples

Content-Security-Policy:
  default-src 'self';
  font-src 'self' https://fonts.gstatic.com data:

Cela autorise les polices depuis votre propre origine, un CDN de polices nommé et les URI data: inline.

Usage courant

Comme img-src, font-src a souvent besoin de data:. Les bibliothèques de polices d'icônes et beaucoup de frameworks CSS inlinent les glyphes en URI data: base64, et certaines configurations de polices auto-hébergées embarquent de petites fontes directement dans la feuille de style. Autoriser data: ici est peu risqué, puisqu'un fichier de police ne peut pas s'exécuter.

Si vous utilisez un service de polices hébergé, les fichiers de police viennent en général d'un host différent de la feuille de style. Google Fonts, par exemple, sert le CSS depuis fonts.googleapis.com (un host de styles) mais les fichiers .woff2 depuis fonts.gstatic.com, donc ce host va dans font-src tandis que le host de la feuille de style va dans style-src.

Notes de sécurité

Les polices sont un type de ressource à faible risque. Une police bloquée retombe sur une police système au lieu de casser la page, et une police ne peut pas exécuter de code, donc font-src est un endroit sûr pour autoriser data: même sous une politique stricte. Vérifiez le reste de la politique avec l'évaluateur CSP.

La directive limite quand même l'exfiltration: un attaquant capable d'injecter une règle @font-face pourrait la pointer vers un host arbitraire comme canal de requêtes dissimulé, donc gardez font-src limité à des hosts connus plutôt que font-src *.

Contournements et risques connus

font-src est un contrôle d'intégrité du contenu et d'exfiltration, pas un contrôle d'injection, parce que les polices ne peuvent pas s'exécuter. Le risque principal est une liste de sources trop large. Un joker * ne correspond pas à data:, donc si un framework a besoin de données de police inline, vous devez lister data: explicitement même quand * est présent.

Recommandation

Content-Security-Policy: font-src 'self' https://fonts.gstatic.com

Limitez font-src à votre propre origine plus le host de polices que vous utilisez réellement. N'ajoutez data: que quand une bibliothèque de polices d'icônes ou un framework inline des glyphes; le risque est faible ici parce qu'une police ne peut pas s'exécuter. Évitez * et les schemes nus, qui transforment les requêtes de polices en canal de données dissimulé.

Reporting

Quand une police est bloquée, le navigateur envoie un report csp-violation avec font-src comme effectiveDirective, incluant l'URL bloquée. CentralCSP collecte et agrège ces reports, pour que vous voyiez chaque host de polices que vos pages chargent réellement avant de resserrer la directive.

Prise en charge par les navigateurs

font-src fait partie de CSP Level 1 et est prise en charge par tous les navigateurs qui implémentent CSP. Elle est stable et largement disponible.

Voir aussi

Sources

On this page