iis x-frame-options

X-Frame-Options no funciona IIS web.config



(6)

Aquí hay otra cosa a considerar:

Si tiene un back-end y proyectos de UI separados (como es muy común en los sitios basados ​​en REST), asegúrese de colocar X-Frame-Options en la interfaz de usuario web.config. Su API probablemente está permitiendo llamadas entre sitios, por lo que agregar el encabezado a su proyecto de API no tendría sentido.

Actualmente, nuestro sitio no está a salvo del clickjacking, por lo que ingresé a web.config y agregué

<system.webServer> <httpProtocol> <customHeaders> <add name="X-Frame-Options" value="DENY" /> </customHeaders> </httpProtocol> </system.webServer>

Este es un código muy sencillo. Mi problema es que simplemente no funciona. Las preguntas que tengo son:

  1. ¿Hay alguna manera de ver si las X-Frame-Options están en la respuesta del encabezado? Lo busqué en httpfox y no obtuve nada, por lo que no puedo verificar si web.config está realmente poniendo cosas en el encabezado.
  2. ¿Por qué esto no funciona? ¿Qué puedo hacer para probar o avanzar?

Intenté agregarlo en el Global.asax en el método Application_Start , pero parece que no puedo "golpear" este método cuando depuro; no llega a los puntos de ruptura.

private void Application_Start(object sender, EventArgs e) { // Code that runs on application startup HttpContext.Current.Response.AddHeader("x-frame-options", "DENY"); LogHelper.Info("Cost of Care Web Application Starting"); }

Me gustaría agregar que he intentado agregarlo directamente en la etiqueta de cabecera y también he intentado agregarlo en una etiqueta meta como tal

<meta http-equiv="X-Frame-Options" content="deny">


Descubrí que algunos tipos de archivos (archivos .asp y .htm) estaban obteniendo el encabezado de Opciones de marco de X agregado por este mecanismo y otros (.js) no. Usando la utilidad de administración de IIS, eliminé el encabezado del nivel de la aplicación y lo agregué en el nivel del servidor, y luego todos los archivos obtuvieron el encabezado agregado.


Desde que mis comentarios respondieron a la pregunta, aquí está el resultado final:

Por alguna razón, configurar X-Frame-Options en web.config no parece funcionar realmente a pesar de que la documentación hace que suene como debería.

Una solución fácil es establecer los encabezados manualmente utilizando:

Response.AddHeader("X-Frame-Options", "DENY");

Si necesita este conjunto para cada solicitud sin excepciones, puede agregar Application_BeginRequest a Global.asax:

protected void Application_BeginRequest() { Response.AddHeader("X-Frame-Options", "DENY"); }


El encabezado X-Frame-Options se puede usar para controlar si una página se puede colocar en un IFRAME. Debido a que la técnica de Framesniffing se basa en poder colocar el sitio de la víctima en un IFRAME, una aplicación web puede protegerse mediante el envío de un encabezado de Opciones de X-Frame apropiado.

Para configurar IIS para agregar un encabezado X-Frame-Options a todas las respuestas para un sitio determinado, siga estos pasos:

  1. Abra el administrador de Internet Information Services (IIS).
  2. En el panel Conexiones del lado izquierdo, expanda la carpeta Sitios y seleccione el sitio que desea proteger.
  3. Haga doble clic en el icono HTTP Response Headers en la lista de características en el medio.
  4. En el panel Acciones en el lado derecho, haga clic en Agregar.
  5. En el cuadro de diálogo que aparece, escriba X-Frame-Options en el campo Nombre y escriba SAMEORIGIN o DENY en el campo Valor.
  6. Haga clic en Aceptar para guardar los cambios.

La respuesta de siva.k no funciona en relación con MVC5 ya que el encabezado se genera dos veces aquí. El siguiente código debería funcionar:

protected void Application_Start() { // MVC5 generates the "X-Frame-Options SAMEORIGIN" header by default, the following line disables the default behaviour System.Web.Helpers.AntiForgeryConfig.SuppressXFrameOptionsHeader = true; } protected void Application_BeginRequest() { Response.AddHeader("X-Frame-Options", "DENY"); }

La SuppressXFrameOptionsHeader se mencionó aquí: https://.com/a/20262211/3936440


<system.webServer> <httpProtocol> <customHeaders> <add name="Content-Security-Policy" value="default-src: https:; frame-ancestors ''self'' X-Frame-Options: SAMEORIGIN" /> </customHeaders> </httpProtocol> </system.webServer>

Su entrada web.config debe estar bajo la política de seguridad de contenido para hacer uso de la codificación actual no depreciada previamente. El valor bajo la política de seguridad de contenido de value="default-src: https: es único para su sitio web.

El contenido que importa es lo que viene después de ''value = "default-src: https:'' pero lo más importante está contenido dentro de la Política de Seguridad de Contenido.