MVC 5 empêche l’access au contenu via Iframe

Depuis la mise à niveau de MVC4 vers MVC5, j’ai remarqué un en-tête de serveur supplémentaire ajouté à mes pages Web:

X-Frame-Options: SAMEORIGIN

Je comprends les avantages de l’ajout de cette balise sur la sécurité, mais l’une des pages est censée être incluse dans un iframe provenant d’autres projets (sur d’autres domaines), cet en-tête supplémentaire l’empêche.

J’ai vérifié que ce n’est pas le serveur IIS7 hébergeur qui ajoute l’en-tête, et quand j’ai rétrogradé à MVC4 – l’en-tête est parti.

Est-ce que quelqu’un sait comment supprimer ce défaut de MVC5?

MVC5 ajoute automatiquement l’en-tête HTTP X-Frame-Options avec SAMEORIGIN . Cela empêche votre site d’être chargé dans un iframe .

Mais nous pouvons désactiver cette option dans Application_Start dans le Global.asax.cs .

Exemple

 protected void Application_Start() { AntiForgeryConfig.SuppressXFrameOptionsHeader = true; } 

Mettre à jour

J’ai écrit un article à ce sujet MVC5 empêche votre site Web d’être chargé dans un IFRAME

Essayez quelque chose comme ça dans Global.asax :

 protected void Application_PreSendRequestHeaders(object sender, EventArgs e) { HttpContext.Current.Response.Headers.Remove("X-Frame-Options"); } 

MODIFIER:

Regardez la réponse de Colin Bacon . C’est plus correct que le mien.

En bref, ne supprimez pas cet en-tête si vous ne souhaitez pas exécuter votre site dans IFRAME, car cela ouvrira la vulnérabilité de falsification. Mais si vous souhaitez toujours le supprimer, utilisez AntiForgeryConfig.SuppressXFrameOptionsHeader = true; dans Application_Start , c’est une manière plus propre de le faire.

Voici une méthode d’extension de remplacement pour la classe HtmlHelper . Il va d’abord effacer tous X-Frame-Options têtes X-Frame-Options , puis append un seul en X-Frame-Options tête X-Frame-Options normalement ajouté par la méthode AntiForgeryToken .

Cette technique respecte le paramètre SuppressXFrameOptionsHeader , mais présente l’inconvénient de supprimer tous les en X-Frame-Options têtes X-Frame-Options ajoutés précédemment, même ceux ayant des valeurs autres que SAMEORIGIN .

 public static MvcHtmlSsortingng AntiForgeryTokenSingleHeader(this HtmlHelper html) { ssortingng token = AntiForgery.GetHtml().ToSsortingng(); HttpResponseBase httpResponse = html.ViewContext.HttpContext.Response; httpResponse.Headers.Remove("X-Frame-Options"); if (!AntiForgeryConfig.SuppressXFrameOptionsHeader) { httpResponse.AddHeader("X-Frame-Options", "SAMEORIGIN"); } return new MvcHtmlSsortingng(token); } 

Si vous voulez un peu plus de flexibilité, voici un ActionAtsortingbute qui ajoute / supprime les en-têtes basés sur une liste blanche. Si le référent n’est pas dans la liste blanche, l’en-tête SAMEORIGIN est laissé en place. J’allais coller le code, mais SO se plaint de la longueur.

https://long2know.com/2016/06/asp-net-anti-forgery-xframe-options/