En-tête X-Frame-Options
Note :
Pour des options plus complètes que celles offertes par cet en-tête, voir la directive frame-ancestors dans un en-tête Content-Security-Policy.
L'en-tête de réponse HTTP X-Frame-Options peut être utilisé afin d'indiquer si un navigateur doit être autorisé à afficher le document dans un <frame>, <iframe>, <embed> ou <object>. Les sites peuvent utiliser cet en-tête afin d'éviter les attaques d'usurpation de clic et certaines fuites inter-sites, en s'assurant que leur contenu n'est pas intégré dans d'autres sites.
Si cet en-tête n'est pas envoyé, et que le site web n'a pas mis en place d'autres mécanismes pour restreindre l'intégration (comme la directive CSP frame-ancestors), alors le navigateur permet à d'autres sites d'intégrer ce document.
| Type d'en-tête | En-tête de réponse |
|---|
Syntaxe
X-Frame-Options: DENY
X-Frame-Options: SAMEORIGIN
Directives
DENY-
Le document ne peut pas être chargé dans un cadre, quelle que soit son origine (l'intégration à la fois de la même origine et d'origines croisées est bloquée).
SAMEORIGIN-
Le document ne peut être intégré que si tous les cadres ancêtres ont la même origine que la page elle-même.
ALLOW-FROM origin-
Il s'agit d'une directive obsolète. Les navigateurs modernes qui rencontrent des en-têtes de réponse avec cette directive ignorent complètement l'en-tête. L'en-tête HTTP
Content-Security-Policypossède une directiveframe-ancestorsque vous devez utiliser à la place.
Exemples
Attention :
Définir X-Frame-Options dans l'élément HTML <meta> (par exemple, <meta http-equiv="X-Frame-Options" content="deny">) n'a aucun effet. X-Frame-Options n'est appliqué qu'avec les en-têtes HTTP, comme le montrent les exemples ci-dessous.
Configurer Apache
Pour configurer Apache afin d'envoyer l'en-tête X-Frame-Options pour toutes les pages, ajoutez ceci à la configuration de votre site :
Header always set X-Frame-Options "SAMEORIGIN"
Pour configurer Apache afin de définir X-Frame-Options sur DENY, ajoutez ceci à la configuration de votre site :
Header set X-Frame-Options "DENY"
Configurer Nginx
Pour configurer Nginx afin d'envoyer l'en-tête X-Frame-Options, ajoutez ceci soit à la configuration HTTP, serveur ou à la configuration de l'emplacement :
add_header X-Frame-Options SAMEORIGIN always;
Pour définir l'en-tête X-Frame-Options sur DENY, utilisez :
add_header X-Frame-Options DENY always;
Configurer IIS
Pour configurer IIS afin d'envoyer l'en-tête X-Frame-Options, ajoutez ceci au fichier Web.config de votre site :
<system.webServer>
…
<httpProtocol>
<customHeaders>
<add name="X-Frame-Options" value="SAMEORIGIN" />
</customHeaders>
</httpProtocol>
…
</system.webServer>
Pour plus d'information, voir l'article du support technique Microsoft sur la mise en place de cette configuration à l'aide du Gestionnaire IIS (angl.) depuis son interface utilisateur.
Configurer HAProxy
Pour configurer HAProxy afin qu'il envoie l'en-tête X-Frame-Options, ajoutez la ligne suivante à la configuration de votre partie avant du site (site), écouteur ou partie arrière du site (serveur) :
rspadd X-Frame-Options:\ SAMEORIGIN
Dans les versions plus récentes, utilisez :
http-response set-header X-Frame-Options SAMEORIGIN
Configurer Express
Pour définir X-Frame-Options sur SAMEORIGIN en utilisant Helmet (angl.), ajoutez ce qui suit à la configuration de votre serveur :
import helmet from "helmet";
const app = express();
app.use(
helmet({
xFrameOptions: { action: "sameorigin" },
}),
);
Spécifications
| Spécification |
|---|
| HTML> # the-x-frame-options-header> |