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 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/
X-Frame-Options: ALLOWALL

Valeurs possibles

Si la valeur DENY est spécifiée, la 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é.
ALLOWALL
La page peut être affichée dans une frame, peut-importe le site qui essaie de la charger.

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/"

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

Header set X-Frame-Options "ALLOWALL"

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 AndroidEdge MobileFirefox pour AndroidOpera pour AndroidSafari pour iOSSamsung Internet
Support simpleChrome 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 OuiEdge Mobile 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 Support complet 18IE Support complet 8Opera ? Safari Aucun support NonWebView Android ? Chrome Android ? Edge Mobile ? Firefox Android ? Opera 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.
Edge Mobile ? Firefox Android ? 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

Étiquettes et contributeurs liés au document

Étiquettes : 
Dernière mise à jour par : emassip,