object-src
La directive CSP object-src contrôle le contenu de plugin object et embed. Définir object-src none est un pilier de toute CSP stricte.
Dernière mise à jour:
La directive object-src contrôle le contenu de plugin sous une politique de sécurité du contenu (Content Security Policy, CSP). Elle régit les éléments <object> et <embed>, qui peuvent charger des plugins, du Flash, des PDF et d'autres contenus intégrés qui s'exécutaient historiquement dans le contexte de la page.
Une politique minimale sûre pour cette directive:
Content-Security-Policy: object-src 'none'Chaîne de repli
object-src se replie sur default-src. Si vous ne définissez pas object-src, le contenu de plugin est régi par ce que default-src autorise. Si ni l'une ni l'autre n'est présente, il se charge depuis n'importe où.
Valeurs
object-src accepte une liste de sources séparées par des espaces combinant sources mots-clés, host sources et scheme sources:
| Valeur | Statut | Description |
|---|---|---|
'none' | ✅ Bon | Bloque tout contenu de plugin. La valeur recommandée. |
'self' | ✅ Bon | Contenu de plugin de même origine uniquement. Préférez 'none' sauf si vous intégrez quelque chose. |
plugins.example.com | ✅ Bon | Le host exact d'une ressource que vous devez intégrer. |
https: | ❌ Risqué | Contenu de plugin depuis n'importe quel host HTTPS; rouvre ce point d'injection. |
data: | ❌ Risqué | Une URL data: contrôlée par un attaquant peut transporter du contenu de plugin actif qui s'exécute. |
blob: | ❌ Risqué | Laisse un script injecté construire du contenu de plugin côté client. |
* | ❌ Risqué | Aucune protection pour ce point d'entrée. Ne correspond jamais à data: ni blob:. |
Les nonces et les hashes ne s'appliquent pas.
Exemples
Content-Security-Policy:
default-src 'self';
object-src 'none';
base-uri 'none'Ici, le contenu de plugin est bloqué entièrement, ce qui est le réglage recommandé pour presque tous les sites.
Usage courant
La valeur standard est object-src 'none'. Les intégrations de plugin sont un point d'injection: un attaquant capable de placer un élément <object> ou <embed> peut parfois charger du contenu actif qui s'exécute dans la page. Comme les navigateurs modernes ont abandonné la prise en charge des plugins et que <embed> et <object> sont rarement nécessaires, les bloquer complètement ne coûte rien sur la plupart des sites et ferme une vraie surface d'attaque. object-src 'none' fait partie des directives qu'une CSP stricte inclut toujours, aux côtés d'un nonce ou d'un hash sur script-src et de base-uri 'none'.
La directive plugin-types, aujourd'hui supprimée, servait à restreindre les types MIME de plugin. Elle a été retirée de CSP Level 3 et des navigateurs; utilisez object-src 'none' à la place. Vous pouvez confirmer qu'une politique stricte l'inclut avec l'évaluateur CSP.
Notes de sécurité
Contrairement aux images ou aux polices, le contenu de plugin peut transporter un comportement exécutable, donc object-src est un vrai contrôle d'injection, pas seulement un contrôle de contenu. Il y a rarement une raison de l'autoriser. Si vous devez intégrer une ressource de plugin précise, limitez object-src au host exact plutôt que de l'assouplir largement.
Contournements et risques connus
Laisser object-src non définie (en s'appuyant sur un default-src permissif) laisse le point d'entrée plugin ouvert, ce qui explique pourquoi les recommandations de CSP stricte nomment object-src 'none' explicitement. Toute valeur plus large que les hosts précis que vous intégrez réellement rouvre ce point d'entrée. Un joker object-src * revient à n'avoir aucune protection pour ce type de ressource.
Recommandation
Content-Security-Policy: object-src 'none'Bloquez entièrement le contenu de plugin. object-src 'none' fait partie de la politique stricte recommandée par la cheat sheet CSP d'OWASP et les recommandations de CSP stricte de web.dev. Les sites modernes n'ont presque jamais besoin de <object> ou <embed>, donc cela ferme un point d'injection sans aucun coût.
Reporting
Quand du contenu de plugin est bloqué, le navigateur envoie un report csp-violation avec object-src comme effectiveDirective, incluant l'URL bloquée. CentralCSP collecte et agrège ces reports, donc une violation object-src inattendue remonte immédiatement, ce qui signifie en général du balisage injecté.
Prise en charge par les navigateurs
object-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.
FAQ
Pourquoi mettre object-src à none ?
<object> et <embed> sont un point d'injection: un attaquant qui en place un
peut parfois charger du contenu actif qui s'exécute dans la page. Les navigateurs
modernes ont abandonné la prise en charge des plugins, donc object-src 'none'
ferme cette surface sans aucun coût et fait partie des directives que toute CSP
stricte inclut.
Que contrôle object-src ?
object-src régit le contenu de plugin chargé via les éléments <object> et
<embed>, historiquement Flash, les PDF et d'autres contenus embarqués qui
s'exécutaient dans le contexte de la page. Elle n'accepte ni nonces ni hashes. Si
vous ne la définissez pas, le contenu de plugin se replie sur default-src.
Voir aussi
- Directives de la Content Security Policy
- default-src
- script-src
- base-uri
- Valeurs mots-clés CSP
- Suite CSP CentralCSP