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

FonctionnalitéChromeEdgeFirefoxInternet ExplorerOperaSafari
Support simple4 Oui3.6.9810.54
ALLOW-FROM Non Oui188 ? Non
SAMEORIGIN Oui1 ? Oui28 Oui3 Oui
FonctionnalitéAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Support simple Oui Oui Oui Oui Oui Oui Oui
ALLOW-FROM ? ? ? ? ? Non Non
SAMEORIGIN Oui1 Oui1 ? ? Oui3 ? Oui

1. Starting in Chrome 61, this applies to all of a frame's ancestors.

2. Starting in Firefox 59, this applies to all of a frame's ancestors.

3. Starting in Opera 48, this applies to all of a frame's ancestors.

Voir également

Étiquettes et contributeurs liés au document

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