X-Frame-Options

L'option d'entête HTTP X-Frame-Options permet de spécifier si oui ou non un navigateur dispose des autorisations pour charger une page dans un  <frame>, <iframe> ou <object> . Cette option permet à un site d'éviter les attaques de type clickjacking , en s'assurant que son contenu ne puisse pas être intégré au sein d'autres sites.

Cette sécurité n'est disponible que dans le cas où le navigateur supporte l'option X-Frame-Options.

Type d'en-tête Response header
Forbidden header name non

Syntaxe

Quatre valeurs sont possibles pour  X-Frame-Options:

X-Frame-Options: DENY
X-Frame-Options: SAMEORIGIN
X-Frame-Options: ALLOW-FROM https://example.com/

Valeurs possibles

Si la valeur DENY est spécifiée, le chargement de la page ne pourra pas se faire dans une frame que ce soit d'un site extérieur ou depuis la même origine. Par contre, si l'on spécifie SAMEORIGIN, on peut toujours afficher la page dans une frame tant que le site qui l'intègre est le même que celui servant la page.

DENY
La page ne peut pas être affiché dans une frame, peu importe le site qui essaie de la charger.
SAMEORIGIN
La page ne peut être affiché que par un site de même origine. La spécification ne définit pas si les navigateurs doivent appliquer la règle à la racine (top level), au parent ou sur toute la chaine.
ALLOW-FROM uri
La page ne peut s'afficher dans une frame qu'à partir de l'origine spécifié.

Exemples

Note: Configurer l'option dans la meta tag est inutile ! Par exemple, <meta http-equiv="X-Frame-Options" content="deny"> n'a aucun effet. Merci de ne pas l'utiliser! Le seul moyen pour que cette option soit opérationnelle est de le configurer au niveau de la HTTP header comme les exemples ci-dessous, X-Frame-Options.

Configuration  d'Apache

Afin de configurer Apache pour qu'il renvoie l'option X-Frame-Options header pour toutes les pages, il faut ajouter la commande suivante au fichier de configuration de votre site :

Header always set X-Frame-Options "SAMEORIGIN"

Afin de configurer Apache sur la valeur X-Frame-Options à DENY, il faut ajouter la commande suivante au fichier de configuration de votre site :

Header set X-Frame-Options "DENY"

Afin de configurer Apache sur la valeur X-Frame-Options  à ALLOW-FROM sur un site spécifique, il faut ajouter la commande suivante au fichier de configuration de votre site :

Header set X-Frame-Options "ALLOW-FROM https://example.com/"

Configuration de nginx

Afin de configurer nginx à renvoyer X-Frame-Options header, il faut ajouter ceci à votre configuration "http", "server" ou "location" :

add_header X-Frame-Options SAMEORIGIN;

Configuration IIS

Afin de configurer IIS à renvoyer X-Frame-Options header, il faut ajouter le bloc suivant dans le fichier de configuration  Web.config :

<system.webServer>
  ...

  <httpProtocol>
    <customHeaders>
      <add name="X-Frame-Options" value="SAMEORIGIN" />
    </customHeaders>
  </httpProtocol>

  ...
</system.webServer>

Configuration de HAProxy

Afin de configurer HAProxy à renvoyer X-Frame-Options header, il faut ajouter la commande suivante à la configuration du front-end, listen, ou backend :

rspadd X-Frame-Options:\ SAMEORIGIN

Spécifications

Specification Title
RFC 7034 HTTP Header Field X-Frame-Options

Compatibilités avec les navigateurs

Update compatibility data on GitHub
OrdinateurMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidFirefox pour AndroidOpera pour AndroidSafari sur iOSSamsung Internet
X-Frame-OptionsChrome Support complet 4Edge Support complet OuiFirefox Support complet 3.6.9IE Support complet 8Opera Support complet 10.5Safari Support complet 4WebView Android Support complet OuiChrome Android Support complet OuiFirefox Android Support complet OuiOpera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Oui
ALLOW-FROMChrome Aucun support NonEdge Support complet OuiFirefox Aucun support 18 — 70IE Support complet 8Opera Aucun support NonSafari Aucun support NonWebView Android Aucun support NonChrome Android Aucun support NonFirefox Android Support complet 18Opera Android ? Safari iOS Aucun support NonSamsung Internet Android Aucun support Non
SAMEORIGINChrome Support complet Oui
Notes
Support complet Oui
Notes
Notes Starting in Chrome 61, this applies to all of a frame's ancestors.
Edge ? Firefox Support complet Oui
Notes
Support complet Oui
Notes
Notes Starting in Firefox 59, this applies to all of a frame's ancestors.
IE Support complet 8Opera Support complet Oui
Notes
Support complet Oui
Notes
Notes Starting in Opera 48, this applies to all of a frame's ancestors.
Safari Support complet OuiWebView Android Support complet Oui
Notes
Support complet Oui
Notes
Notes Starting in Chrome 61, this applies to all of a frame's ancestors.
Chrome Android Support complet Oui
Notes
Support complet Oui
Notes
Notes Starting in Chrome 61, this applies to all of a frame's ancestors.
Firefox Android Support complet Oui
Notes
Support complet Oui
Notes
Notes Starting in Firefox 59, this applies to all of a frame's ancestors.
Opera Android Support complet Oui
Notes
Support complet Oui
Notes
Notes Starting in Opera 48, this applies to all of a frame's ancestors.
Safari iOS ? Samsung Internet Android Support complet Oui

Légende

Support complet  
Support complet
Aucun support  
Aucun support
Compatibilité inconnue  
Compatibilité inconnue
Voir les notes d'implémentation.
Voir les notes d'implémentation.

Voir également