# font-src (/fr/docs/web-security/policies/content-security-policy/directives/font-src)



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:

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

## Chaîne de repli [#chaîne-de-repli]

`font-src` se replie sur [`default-src`](/fr/docs/web-security/policies/content-security-policy/directives/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 [#valeurs]

`font-src` accepte une liste de sources séparées par des espaces combinant [sources mots-clés](/fr/docs/web-security/policies/content-security-policy/values/csp-keywords), [host sources](/fr/docs/web-security/policies/content-security-policy/values/csp-host-source) et [scheme sources](/fr/docs/web-security/policies/content-security-policy/values/csp-scheme-source):

| Valeur              | Statut   | Description                                                                                                                |
| ------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------- |
| `'none'`            | ✅ Bon    | Bloque tous les chargements de polices; la page retombe sur les polices système.                                           |
| `'self'`            | ✅ Bon    | Polices de l'origine de la page uniquement.                                                                                |
| `fonts.gstatic.com` | ✅ Bon    | Un host de polices ou un CDN nommé.                                                                                        |
| `https:`            | ✅ Bon    | N'importe quelle origine HTTPS. Large; préférez des hosts nommés.                                                          |
| `data:`             | ✅ Bon    | URI `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 [#exemples]

```http
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 [#usage-courant]

Comme [`img-src`](/fr/docs/web-security/policies/content-security-policy/directives/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`](/fr/docs/web-security/policies/content-security-policy/directives/style-src).

## Notes de sécurité [#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](/tools/csp-evaluator).

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 [#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 [#recommandation]

```http
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 [#reporting]

Quand une police est bloquée, le navigateur envoie un [report csp-violation](/fr/docs/web-security/reporting-api/reports/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 [#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 [#voir-aussi]

* [Directives de la Content Security Policy](/fr/docs/web-security/policies/content-security-policy/introduction/csp-directives)
* [default-src](/fr/docs/web-security/policies/content-security-policy/directives/default-src)
* [img-src](/fr/docs/web-security/policies/content-security-policy/directives/img-src)
* [Valeurs scheme source](/fr/docs/web-security/policies/content-security-policy/values/csp-scheme-source)
* [Suite CSP CentralCSP](/platform/csp-builder)

## Sources [#sources]

* [MDN, CSP font-src](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Content-Security-Policy/font-src)
* [W3C, Content Security Policy Level 3](https://www.w3.org/TR/CSP3/)
* [W3C CSP editor's draft](https://w3c.github.io/webappsec-csp/)
