Compartir a través de


Extensiones de nombre de archivo <fileExtensions>

Información general

El elemento <fileExtensions> contiene una colección de elementos <add> que especifican extensiones de nombre de archivo únicas que IIS permitirá o denegará, dependiendo de cómo se defina cada elemento <add>. Mediante el uso del elemento <fileExtensions>, puede ajustar los tipos de contenido que el servidor pondrá a disposición de los clientes web.

Por ejemplo, si establece el atributo allowUnlisted en false, se denegarán todas las solicitudes de archivos con extensiones que no estén incluidas en la lista de extensiones permitidas. Con el elemento <clear>, puede borrar la lista de extensiones de nombre de archivo que ya se han definido y, a continuación, puede especificar solo las extensiones de nombre de archivo que quiere permitir.

Nota:

Cuando el filtrado de solicitudes bloquea una solicitud HTTP debido a una extensión de nombre de archivo denegada, IIS 7 devolverá un error HTTP 404 al cliente y registrará el siguiente estado HTTP con un subestado único que identifique el motivo por el que se denegó la solicitud:

Subestado HTTP Descripción
404.7 Extensión de archivo denegada

Esta subestado permite a los administradores web analizar sus registros de IIS e identificar posibles amenazas.

Compatibilidad

Versión Notas
IIS 10.0 El elemento <fileExtensions> no se modificó en IIS 10.0.
IIS 8.5 El elemento <fileExtensions> no se modificó en IIS 8.5.
IIS 8.0 El elemento <fileExtensions> no se modificó en IIS 8.0.
IIS 7.5 El elemento <fileExtensions> no se modificó en IIS 7.5.
IIS 7.0 El elemento <fileExtensions> de la colección <requestFiltering> se introdujo en IIS 7.0.
IIS 6,0 El elemento <fileExtensions> reemplaza las características de IIS 6.0 UrlScan [AllowExtensions] y [DenyExtensions].

Configuración

La instalación predeterminada de IIS 7 y versiones posteriores incluye el servicio de rol o característica Filtrado de solicitudes. Si se desinstala el servicio o el rol de filtrado de solicitudes, puede volver a instalarlo siguiendo estos pasos.

Windows Server 2012 o Windows Server 2012 R2

  1. En la barra de tareas, haga clic en Administrador del servidor.
  2. En Administrador del servidor, haga clic en el menú Administrar y, después, haga clic en Agregar roles y características.
  3. En el asistente para Agregar roles y características, haga clic en Siguiente. Seleccione el tipo de instalación y haga clic en Siguiente. Seleccione el servidor de destino y haga clic en Siguiente.
  4. En la página Roles de servidor, expanda Servidor web (IIS), expanda Servidor web, expanda Seguridad y, a continuación, seleccione Filtrado de solicitudes. Haga clic en Next.
    Screenshot of the Request Filtering option being highlighted and selected. .
  5. En la página Seleccionar características, haz clic en Siguiente.
  6. En la página Confirmar selecciones de instalación, haga clic en Instalar.
  7. En la página Resultados , haga clic en Cerrar.

Windows 8 o Windows 8.1

  1. En la pantalla Inicio, mueva el puntero hasta la esquina inferior izquierda, haga clic con el botón derecho en el botón Inicio y, a continuación, haga clic en Panel de control.
  2. En Panel de control, haga clic en Programas y características y después en Activar o desactivar las características de Windows.
  3. Expanda Internet Information Services, expanda Servicios World Wide Web, expanda Seguridad y, a continuación, seleccione Filtrado de solicitudes.
    Screenshot of the Request Filtering folder being highlighted and selected.
  4. Haga clic en OK.
  5. Haga clic en Cerrar.

Windows Server 2008 o Windows Server 2008 R2

  1. En la barra de tareas, haga clic en Inicio, seleccione Herramientas administrativas y, luego, haga clic en Administrador del servidor.
  2. En el panel de jerarquía del Administrador del servidor, expanda Roles y, luego, haga clic en Servidor web (IIS).
  3. En el panel Servidor web (IIS), desplácese hasta la sección Servicios de rol y, luego, haga clic en Agregar servicios de rol.
  4. En la página Seleccionar servicios de rol del Asistente para agregar servicios de rol, seleccione Filtrado de solicitudes y haga clic en Siguiente.
    Screenshot of the Add Role Services Wizard
  5. En la página Confirmar selecciones de instalación, haz clic en Instalar.
  6. En la página Resultados , haga clic en Cerrar.

Windows Vista o Windows 7

  1. En la barra de tareas, haga clic en Inicio y, luego, haga clic en Panel de control.
  2. En Panel de control, haga clic en Programas y características y después en Activar o desactivar las características de Windows.
  3. Expanda Internet Information Services, después World Wide Web Services y, a continuación Seguridad.
  4. Seleccione Filtrado de solicitudes y haga clic en Aceptar.
    Screenshot of the Select Roles Services Wizard showing the Request Filtering folder being highlighted and selected.

Procedimientos

Nota para los usuarios de IIS 7.0: Algunos de los pasos de esta sección pueden requerir que instale el módulo Administration Pack de Microsoft para IIS 7.0, que incluye una interfaz de usuario para el filtrado de solicitudes. Para instalar el módulo Administration Pack de Microsoft para IIS 7.0, consulte la siguiente dirección URL:

Cómo denegar el acceso a una extensión de nombre de archivo específica

  1. Abra el Administrador de Internet Information Services (IIS):

    • Si usa Windows Server 2012 o Windows Server 2012 R2:

      • En la barra de tareas, haga clic en Administrador del servidor, en Herramientas y, a continuación, en Administrador de Internet Information Services (IIS).
    • Si usa Windows 8 o Windows 8.1:

      • Mantenga presionada la tecla Windows, presione la letra X y haga clic en Panel de control.
      • En Panel de control, haga clic en Herramientas administrativas y, a continuación, haga doble clic en Administrador de Internet Information Services (IIS).
    • Si usa Windows Server 2008 o Windows Server 2008 R2:

      • En la barra de tareas, haga clic en Inicio, seleccione Herramientas administrativas y, a continuación, haga clic en Administrador de Internet Information Services (IIS).
    • Si usa Windows Vista o Windows 7:

      • En la barra de tareas, haga clic en Inicio y, luego, haga clic en Panel de control.
      • Haga doble clic en Herramientas administrativas y, a continuación, haga doble clic en Administrador de Internet Information Services (IIS).
  2. En el panel Conexiones, vaya a la conexión, sitio u aplicación de la que quiere modificar la configuración del filtrado de solicitudes.

  3. En el panel Página principal, haga doble clic en Filtrado de solicitudes.
    Screenshot of the Default Web Site Home pane showing the Request Filtering option being highlighted.

  4. En el panel Filtrado de solicitudes, haga clic en la pestaña Extensiones de nombre de archivo y, a continuación, haga clic en Denegar extensión de nombre de archivo... en el panel Acciones.
    Screenshot of the Request Filtering pane showing the Deny File Name Extension option.

  5. En el cuadro de diálogo Denegar extensión de nombre de archivo, escriba la extensión de nombre de archivo que desea bloquear y, a continuación, haga clic en Aceptar.
    Screenshot of the Deny File Name Extension dialog box, showing the O K option. Por ejemplo, para evitar el acceso a los archivos con una extensión de nombre de archivo .inc, escribiría "inc" en el cuadro de diálogo.

Configuración

Atributos

Atributo Descripción
allowUnlisted Atributo Boolean opcional.

Especifica si el servidor web debe procesar los archivos que tienen extensiones de nombre de archivo sin incluir en la lista. Si establece este atributo en true, debe enumerar todas las extensiones de nombre de archivo que desea denegar. Si establece este atributo en false, debe enumerar todas las extensiones de nombre de archivo que desea permitir.

El valor predeterminado es true.
applyToWebDAV Atributo Boolean opcional.

Especifica si esta configuración también se debe aplicar a las solicitudes de WebDAV.

Elementos secundarios

Elemento Descripción
add Elemento opcional.

Agrega una extensión de nombre de archivo a la colección de extensiones de nombre de archivo.
clear Elemento opcional.

Quita todas las referencias a las extensiones de nombre de archivo de la colección <fileExtensions>.
remove Elemento opcional.

Quita una referencia a una extensión de nombre de archivo de la colección <fileExtensions>.

Ejemplo de configuración

El siguiente archivo Web.config de ejemplo configurará dos opciones. Configurará el filtrado de solicitudes para permitir el acceso de WebDAV a todas las extensiones de nombre de archivo y configurará IIS para denegar el acceso a los archivos con una extensión de nombre de archivo .inc, que a veces se usan como archivos de inclusión para las aplicaciones.

<configuration>
   <system.webServer>
      <security>
         <requestFiltering>
            <fileExtensions applyToWebDAV="false">
               <add fileExtension=".inc" allowed="false" />
            </fileExtensions>
         </requestFiltering>
      </security>
   </system.webServer>
</configuration>

Código de ejemplo

Los ejemplos de código siguientes agregarán una entrada a la lista de extensiones de nombre de archivo para el sitio web predeterminado que denegará el acceso a todos los archivos con una extensión de .inc, que a veces se usan como archivos de inclusión para las aplicaciones, y configurarán el filtrado de solicitudes para permitir el acceso de WebDAV a segmentos ocultos.

Nota:

Para utilizar las mismas muestras para permitir el acceso, debería establecer el valor del atributo allowed en true en lugar de false en cada uno de estos ejemplos.

AppCmd.exe

appcmd.exe set config "Default Web Site" -section:system.webServer/security/requestFiltering /fileExtensions.applyToWebDAV:"False"

appcmd.exe set config "Default Web Site" -section:system.webServer/security/requestFiltering /+"fileExtensions.[fileExtension='.inc',allowed='False']"

PowerShell

Start-IISCommitDelay

$fileExtensions = Get-IISConfigSection -CommitPath 'Default Web Site' -SectionPath 'system.webServer/security/requestFiltering' | Get-IISConfigCollection -CollectionName 'fileExtensions'

New-IISConfigCollectionElement -ConfigCollection $fileExtensions -ConfigAttribute @{ 'fileExtension' = '.inc'; 'allowed' = $false } -AddAt 0

Set-IISConfigAttributeValue -ConfigElement $fileExtensions -AttributeName 'applyToWebDAV' -AttributeValue $false

Stop-IISCommitDelay

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetWebConfiguration("Default Web Site");
         ConfigurationSection requestFilteringSection = config.GetSection("system.webServer/security/requestFiltering");

         ConfigurationElement fileExtensionsElement = requestFilteringSection.GetChildElement("fileExtensions");
         fileExtensionsElement["applyToWebDAV"] = false;
         ConfigurationElementCollection fileExtensionsCollection = fileExtensionsElement.GetCollection();

         ConfigurationElement addElement = fileExtensionsCollection.CreateElement("add");
         addElement["fileExtension"] = @"inc";
         addElement["allowed"] = false;
         fileExtensionsCollection.Add(addElement);

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample

   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetWebConfiguration("Default Web Site")
      Dim requestFilteringSection As ConfigurationSection = config.GetSection("system.webServer/security/requestFiltering")

      Dim fileExtensionsElement As ConfigurationElement = requestFilteringSection.GetChildElement("fileExtensions")
      fileExtensionsElement("applyToWebDAV") = False
      Dim fileExtensionsCollection As ConfigurationElementCollection = fileExtensionsElement.GetCollection

      Dim addElement As ConfigurationElement = fileExtensionsCollection.CreateElement("add")
      addElement("fileExtension") = "inc"
      addElement("allowed") = False
      fileExtensionsCollection.Add(addElement)

      serverManager.CommitChanges()
   End Sub

End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Default Web Site";
var requestFilteringSection = adminManager.GetAdminSection("system.webServer/security/requestFiltering", "MACHINE/WEBROOT/APPHOST/Default Web Site");

var fileExtensionsElement = requestFilteringSection.ChildElements.Item("fileExtensions");
fileExtensionsElement.Properties.Item("applyToWebDAV").Value = false;
var fileExtensionsCollection = fileExtensionsElement.Collection;

var addElement = fileExtensionsCollection.CreateNewElement("add");
addElement.Properties.Item("fileExtension").Value = "inc";
addElement.Properties.Item("allowed").Value = false;
fileExtensionsCollection.AddElement(addElement);

adminManager.CommitChanges();

VBScript

Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Default Web Site"
Set requestFilteringSection = adminManager.GetAdminSection("system.webServer/security/requestFiltering", "MACHINE/WEBROOT/APPHOST/Default Web Site")

Set fileExtensionsElement = requestFilteringSection.ChildElements.Item("fileExtensions")
fileExtensionsElement.Properties.Item("applyToWebDAV").Value = False
Set fileExtensionsCollection = fileExtensionsElement.Collection

Set addElement = fileExtensionsCollection.CreateNewElement("add")
addElement.Properties.Item("fileExtension").Value = "inc"
addElement.Properties.Item("allowed").Value = False
fileExtensionsCollection.AddElement(addElement)

adminManager.CommitChanges()