Saída de SSI desaparece depois de aplicar patches de segurança

Traduções deste artigo Traduções deste artigo
ID do artigo: 318176 - Exibir os produtos aos quais esse artigo se aplica.
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
É altamente recomendável que todos os usuários atualizem para Microsoft (IIS) versão 7.0 em execução no Microsoft Windows Server 2008. O IIS 7.0 aumenta significativamente a segurança de infra-estrutura da Web. Para obter mais informações sobre tópicos relacionados à segurança do IIS, visite o seguinte site:
http://www.microsoft.com/technet/security/prodtech/IIS.mspx
Para obter mais informações sobre o IIS 7.0, visite o seguinte site:
http://www.iis.net/default.aspx?tabid=1
Expandir tudo | Recolher tudo

Neste artigo

Sintomas

Quando você executar um programa de inclusão do lado do servidor (SSI) usando o <!--# exec cgi--> aplicado de comando em um servidor que está executando o Microsoft Windows NT 4.0 com Service Pack 4 (SP4) ou posterior ou Microsoft Windows 2000 com Service Pack 2 (SP2) ou posterior aplicados, a saída do programa não aparece na página. Se você executar o programa mesmo em um servidor sem patch, a saída será exibida conforme o esperado.

Causa

Depois de aplicar esses pacotes de serviço especificado, o Internet Information Services (IIS) espera qualquer programa do SSI que é executado usando o <!--# exec cgi--> comando seguem a especificação de interface comum de gateway (CGI). Essa especificação requer programas CGI para imprimir um cabeçalho de Content-Type HTTP antes de todas as outras saídas. IIS silenciosamente ignora esse cabeçalho e a remove da saída final do programa que ele exibe na página. Se o programa de SSI não incluir esse cabeçalho, o IIS executa o programa mas não exibe nenhum dos sua saída. Isso é uma alteração do comportamento de versões anteriores do Windows, que não exigem esses cabeçalhos e que exibir os cabeçalhos HTTP incluídos na página antes do restante da saída do programa SSI.

Resolução

Você pode fazer a saída aparecem em uma das seguintes maneiras:
  1. Execute o programa usando o <!--# exec cmd--> comando em vez do <!--# exec cgi--> comando. - ou -

  2. Reescreva o programa para imprimir a seguinte linha, seguida por duas novas linhas, antes de todas as outras saídas:
    content-type: text/html

Situação

Esse comportamento é por design.

Mais Informações

Para ativar o SSIs, execute estas etapas:
  1. Inicie o ISM (Internet Service Manager), que carrega o snap-in do IIS para o Microsoft Management Console (MMC).
  2. No MMC, clique duas vezes seu nome de computador no painel esquerdo.
  3. Clique duas vezes o site da Web para o qual você deseja ativar SSI.
  4. Clique com o botão direito do mouse no diretório virtual que conterá os arquivos SSI habilitados. Para ativar SSI para a pasta base de um site da Web, clique com o botão direito do mouse o site.
  5. Clique em Propriedades e clique na guia Diretório base .
  6. Em permissões de execução , clique para selecionar scripts e executáveis .
  7. Clique em OK . Certifique-se selecionar os diretórios que contêm arquivos habilitados para SSI na tela Substituições de herança .Para obter informações adicionais sobre como habilitar o <!--# exec cmd--> comando, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
    233969SSIEnableCmdDirective está definida para FALSE por padrão

Passos para reproduzir o problema

  1. Habilitar inclusões do lado do servidor para o diretório base do site padrão.
  2. Compilar o seguinte programa C em um servidor Windows NT 4.0 ou Windows 2000 sem patch:
    #include <stdio.h>
    int main(int argc, char **argv) {
      printf("Hello World\n");
    
    }
  3. Nomeie o arquivo executável helloworld.exe e, em seguida, coloque o arquivo no diretório raiz do seu servidor Web. Por padrão, esse diretório é C:\inetpub\wwwroot.
  4. Criar a página HTML habilitados SSI seguinte e, em seguida, salve a página como Ssitest.shtm no diretório raiz do seu servidor Web:
    <HTML><BODY>
    Exec cmd: <!--#exec cmd="c:\inetpub\wwwroot\HelloWorld.exe"--><BR>
    Exec cgi: <!--#exec cgi="/HelloWorld.exe"-->
    </BODY></HTML>
  5. Navegue até http://localhost/ssitest.shtm em um computador que esteja executando o Windows NT 4.0 Service Pack 3 (SP3) ou anterior ou o Windows 2000 Service Pack 1 (SP1) ou anterior. Consulte o seguinte:
    Exec cmd: Hello World
    Exec cgi: Hello World
  6. Aplicar o Windows NT 4.0 SP4 ou posterior ou Windows 2000 SP2 ou posterior para o computador.
  7. Vá para http://localhost/ssitest.shtm novamente. Você verá o seguinte:
    Exec cmd: Hello World
    Exec cgi:
  8. Modificar o código para helloworld.exe imprimir um cabeçalho Content-Type primeiro e, em seguida, recompilar o arquivo:
    #include <stdio.h>
    int main(int argc, char **argv) {
      printf("Content-type: text/html\n");
      printf("Hello World\n");
    
    }
  9. Recarregar http://localhost/ssitest.shtm em um computador que esteja executando o Windows NT 4.0 SP4 ou posterior ou Windows 2000 SP2 ou posterior. Você verá o seguinte:
    Exec cmd: Content-type: text/html
     Hello World
    Exec cgi: Hello World
    Observe que diferentemente o <!--# exec cgi--> comando, o <!--# exec cmd--> comando não remove os cabeçalhos do CGI da saída.

Referências

Para obter mais informações sobre SSIs, consulte o tópico "Inclusões do lado do servidor" na documentação on-line do IIS. Para exibir esse tópico, localize Administração , localize o Gerenciamento de sites e localize Server-Side Includes . A documentação on-line do IIS é acessível através da seguinte URL a partir de qualquer computador com a documentação do IIS instalada:
http://localhost/iishelp

Propriedades

ID do artigo: 318176 - Última revisão: quinta-feira, 24 de outubro de 2013 - Revisão: 3.1
A informação contida neste artigo aplica-se a:
  • Microsoft Internet Information Services 5.0
  • Microsoft Internet Information Server 4.0
Palavras-chave: 
kbnosurvey kbarchive kbmt kbpending kbprb KB318176 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 318176

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com