web-dev-qa-db-fra.com

Comment ajouter un en-tête X-Frame-Options à un simple fichier HTML?

J'ai du mal à ajouter X-Frame-Options en-tête vers un simple fichier HTML.

Existe-t-il un moyen de le faire en utilisant JavaScript?

6
sam

L'en-tête X-Frame-Options est ajouté côté serveur, pas sur le client. En effet, l'en-tête est utilisé pour contrôler la façon dont le navigateur doit afficher la page.

Quel que soit le serveur hébergeant votre fichier, il faudrait ajouter cet en-tête.

15
Dan Landberg

X-Frame-Options est un en-tête HTTP. En tant que tel, il ne fait pas partie du HTML et ne peut pas être défini dans un document HTML.

L'une des raisons pour lesquelles il s'agit uniquement d'un en-tête HTTP est que les clients devraient pouvoir décider si le document peut être incorporé dans un cadre avant en analysant le code HTML.

Par conséquent, vous ne pouvez pas y parvenir en modifiant le fichier, mais vous devez modifier la réponse HTTP du serveur. En règle générale, cela se fait dans les paramètres fournis par le logiciel du serveur Web ou avec une langue côté serveur.

Par exemple, un paramètre dans Apache pourrait ressembler à ceci:

Header always append X-Frame-Options DENY

Ou, en PHP vous pouvez définir l'en-tête comme ça:

<?php header('X-Frame-Options: DENY'); ?>

Notez qu'il existe une version plus moderne CSP équivalent frame-ancestors . Mais alors que certaines stratégies CSP peuvent être définies comme <meta> tags, ce n'est pas possible ici. Cela ne fonctionne pas :

<head>
  <!-- This does *not* work! -->
  <meta http-equiv="Content-Security-Policy" content="frame-ancestors 'none'">
</head>

Jetez également un œil à la Clickjacking Defense Cheat Sheet pour un aperçu des mesures de défense contre le détournement de clic au-delà de la définition de l'en-tête XFO.

28
Arminius

Puisque vous mentionnez dans les commentaires que IIS est votre serveur Web, oui, il existe un moyen de le définir sur le serveur Web lui-même.

Plusieurs des autres réponses mentionnent l'ajout à web.config, ce qui est une bonne option s'il s'agit d'une application ASP.NET, mais il existe un autre moyen qui fonctionne pour toute application Web servie à partir d'IIS, quelle que soit la technologie.

Si vous ouvrez la Internet Information Services (IIS) Manager, développez le nœud sous Sites dans le volet de navigation et mettez en surbrillance votre site, sous le groupe de fonctionnalités IIS dans le volet Affichage des fonctionnalités, il y a une fonction nommée HTTP Response Headers. Si vous ouvrez ce nœud, dans le volet Actions à droite, vous voyez une action pour ajouter un en-tête. Ajoutez simplement l'en-tête avec le X-Frame-Options nom et quelle que soit la valeur souhaitée, et il sera ajouté par IIS à chaque réponse servie à partir de ce site.

0
Xander