Compartilhar via


Negar Sequências de Cadeias de Caracteres de Consulta <denyQueryStringSequences>

Visão geral

O elemento <denyQueryStringSequences> contém uma coleção de elementos <add> que especificam as sequências de caracteres da cadeia de caracteres de consulta que o IIS negará, o que ajuda a evitar ataques no servidor Web que usam a cadeia de caracteres de consulta para fornecer o conteúdo do ataque.

Observação

Você pode substituir as sequências da cadeia de caracteres de consulta nesta coleção adicionando as sequências da cadeia de caracteres de consulta à coleção <alwaysAllowedQueryStrings>.

Observação

Quando a filtragem de solicitações bloqueia uma solicitação HTTP devido a uma sequência de cadeia de caracteres de consulta negada, o IIS 7 retornará um erro HTTP 404 ao cliente e registrará o seguinte status HTTP com um substatus exclusivo que identifica o motivo pelo qual a solicitação foi negada:

Substatus HTTP Descrição
404.18 Sequência da Cadeia de Caracteres de Consulta Negada

Esse substatus permite que os administradores Web analisem seus logs do IIS e identifiquem possíveis ameaças.

Compatibilidade

Versão Observações
IIS 10.0 O elemento <denyQueryStringSequences> não foi modificado no IIS 10.0.
IIS 8.5 O elemento <denyQueryStringSequences> não foi modificado no IIS 8.5.
IIS 8.0 O elemento <denyQueryStringSequences> não foi modificado no IIS 8.0.
IIS 7.5 O elemento <denyQueryStringSequences> do elemento <requestFiltering> é fornecido como um recurso do IIS 7.5.
IIS 7.0 O elemento <denyQueryStringSequences> do elemento <requestFiltering> foi introduzido como uma atualização para o IIS 7.0 que está disponível por meio do Artigo 957508 (https://support.microsoft.com/kb/957508) da Base de Dados de Conhecimento Microsoft.
IIS 6,0 O elemento <denyQueryStringSequences> é aproximadamente análogo à seção [DenyQueryStringSequences] que foi adicionada ao URLScan 3.0.

Instalação

A instalação padrão do IIS 7 e versões posteriores inclui o serviço ou recurso de função Filtragem de Solicitações. Se o serviço ou recurso de função Filtragem de Solicitações for desinstalado, você poderá reinstalá-lo usando as etapas a seguir.

Windows Server 2012 R2 ou Windows Server 2012

  1. Na barra de tarefas, clique em Gerenciador do Servidor.
  2. No Gerenciador do Servidor, clique no menu Gerenciar e clique em Adicionar Funções e Recursos.
  3. No assistente Adicionar Funções e Recursos, clique em Avançar. Selecione o tipo de instalação e clique em Avançar. Selecione o servidor de destino e clique em Avançar.
  4. Na página Funções de Servidor, expanda Servidor Web (IIS), Servidor Web, expanda Segurança e selecione Filtragem de Solicitações. Clique em Avançar.
    Screenshot shows Web Server and Security pane expanded and Request Filtering selected. .
  5. Na página Selecionar recursos, clique em Avançar.
  6. Na página Confirmar seleções de instalação, clique em Instalar.
  7. Na página Resultados , clique em Fechar.

Windows 8 ou Windows 8.1

  1. Na tela Iniciar, mova o ponteiro até o canto inferior esquerdo, clique com o botão direito do mouse no botão Iniciar e clique em Painel de Controle.
  2. Em Painel de Controle, clique em Programas e Recursos e clique em Ativar ou desativar recursos do Windows.
  3. Expanda Serviços de Informações da Internet, expanda Serviços da World Wide Web, expanda Segurança e, em seguida, selecione Filtragem de Solicitações.
    Screenshot displays World Wide Web Services and Security pane expanded with Request Filtering selected.
  4. Clique em OK.
  5. Clique em Fechar.

Windows Server 2008 R2 ou Windows Server 2008

  1. Na barra de tarefas, clique em Iniciar, vá para Ferramentas Administrativas e clique em Gerenciador do Servidor.
  2. No painel de hierarquia do Gerenciador do Servidor, expanda Funções e clique em Servidor Web (IIS).
  3. No painel Servidor Web (IIS), role até a seção Serviços de Função e clique em Adicionar Serviços de Função.
  4. Na página Selecionar Serviços de Função do Assistente para Adicionar Serviços de Função, selecione Filtragem de Solicitações e clique em Avançar.
    Screenshot of Select Role Services page displaying Security pane expanded and Request Filtering selected.
  5. Na página Confirmar Seleções de Instalação, clique em Instalar.
  6. Na página Resultados , clique em Fechar.

Windows Vista ou Windows 7

  1. Na barra de tarefas, clique em Iniciar e, depois, em Painel de Controle.
  2. Em Painel de Controle, clique em Programas e Recursos e clique em Ativar ou desativar Recursos do Windows.
  3. Expanda Serviços de Informações da Internet e, em seguida, Serviços World Wide Web e, em seguida, Segurança.
  4. Selecione Filtragem de Solicitações e clique em OK.
    Screenshot of Security pane expanded showing Request Filtering selected.

Instruções

Como negar uma sequência de cadeia de caracteres de consulta

  1. Abra o Gerenciador do IIS (Serviços de Informações da Internet):

    • Caso você esteja usando o Windows Server 2012 ou o Windows Server 2012 R2:

      • Na barra de tarefas, clique em Gerenciador do Servidor, em Ferramentas e em Gerenciador do IIS (Serviços de Informações da Internet).
    • Se você estiver usando o Windows 8 ou Windows 8.1:

      • Mantenha pressionada a tecla Windows, pressione a letra X e clique em Painel de Controle.
      • Clique em Ferramentas Administrativas e clique duas vezes em Gerenciador do IIS (Serviços de Informações da Internet).
    • Caso você esteja usando o Windows Server 2008 ou o Windows Server 2008 R2:

      • Na barra de tarefas, clique em Iniciar, vá para Ferramentas Administrativas e clique em Gerenciador do IIS (Serviços de Informações da Internet).
    • Se você estiver usando o Windows Vista ou Windows 7:

      • Na barra de tarefas, clique em Iniciar e, depois, em Painel de Controle.
      • Clique duas vezes em Ferramentas Administrativas e clique duas vezes em Gerenciador do IIS (Serviços de Informações da Internet).
  2. No painel Conexões, acesse a conexão, o site, o aplicativo ou o diretório para o qual você deseja modificar as configurações de filtragem de solicitações.

  3. No painel Página Inicial, clique duas vezes em Filtragem de Solicitações.

  4. No painel Filtragem de Solicitações, clique na guia Cadeias de Caracteres de Consulta e clique em Negar Cadeia de Caracteres de Consulta... no painel Ações.

  5. Na caixa de diálogo Negar Cadeia de Caracteres de Consulta, insira a sequência de cadeia de caracteres de consulta que você deseja bloquear e clique em OK.

Configuração

O elemento <denyQueryStringSequences> do elemento <requestFiltering> é configurado no nível de site, aplicativo ou diretório.

Atributos

Nenhum.

Elementos filho

Elemento Descrição
add Elemento opcional.

Adiciona uma cadeia de caracteres de consulta à coleção de cadeias de caracteres de consulta negadas.
clear Elemento opcional.

Remove todas as referências a cadeias de caracteres de consulta da coleção.
remove Elemento opcional.

Remove uma cadeia de caracteres de consulta da coleção de cadeias de caracteres de consulta negadas.

Exemplo de configuração

O exemplo a seguir ilustra uma combinação de um elemento <denyQueryStringSequences> e um elemento <alwaysAllowedQueryStrings> que negará quaisquer cadeias de caracteres de consulta se elas contiverem uma das duas sequências de caracteres específicas, mas sempre permitirá uma cadeia de caracteres específica que contenha essas duas sequências de caracteres específicas em uma ordem específica.

<system.webServer>
   <security>
      <requestFiltering>
         <denyQueryStringSequences>
            <add sequence="bad" />
            <add sequence="sequence" />
         </denyQueryStringSequences>
         <alwaysAllowedQueryStrings>
            <add queryString="bad=sequence" />
         </alwaysAllowedQueryStrings>
      </requestFiltering>
   </security>
</system.webServer>

Exemplo de código

Os exemplos a seguir demonstram como adicionar uma sequência da cadeia de caracteres de consulta que será negada no Site Padrão.

AppCmd.exe

appcmd.exe set config "Default Web Site" -section:system.webServer/security/requestFiltering /+"denyQueryStringSequences.[sequence='bad_querystring_sequence']"

PowerShell

$denyQueryStringSequences = Get-IISConfigSection -CommitPath 'Default Web Site' -SectionPath 'system.webServer/security/requestFiltering' | Get-IISConfigCollection -CollectionName 'denyQueryStringSequences'
New-IISConfigCollectionElement -ConfigCollection $denyQueryStringSequences -ConfigAttribute @{ 'sequence' = 'bad_querystring_sequence' }

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");

         ConfigurationElementCollection denyQueryStringSequencesCollection = requestFilteringSection.GetCollection("denyQueryStringSequences");
         ConfigurationElement addElement = denyQueryStringSequencesCollection.CreateElement("add");
         addElement["sequence"] = @"bad_querystring_sequence";
         denyQueryStringSequencesCollection.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 denyQueryStringSequencesCollection As ConfigurationElementCollection = requestFilteringSection.GetCollection("denyQueryStringSequences")
      Dim addElement As ConfigurationElement = denyQueryStringSequencesCollection.CreateElement("add")
      addElement("sequence") = "bad_querystring_sequence"
      denyQueryStringSequencesCollection.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 denyQueryStringSequencesCollection = requestFilteringSection.ChildElements.Item("denyQueryStringSequences").Collection;
var addElement = denyQueryStringSequencesCollection.CreateNewElement("add");
addElement.Properties.Item("sequence").Value = "bad_querystring_sequence";
denyQueryStringSequencesCollection.AddElement(addElement);

adminManager.CommitChanges();

VBScript

Set adminManager = 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 denyQueryStringSequencesCollection = requestFilteringSection.ChildElements.Item("denyQueryStringSequences").Collection
Set addElement = denyQueryStringSequencesCollection.CreateNewElement("add")
addElement.Properties.Item("sequence").Value = "bad_querystring_sequence"
denyQueryStringSequencesCollection.AddElement(addElement)

adminManager.CommitChanges()