Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Ao usar os recursos de metadados no WCF (Windows Communication Foundation), considere as implicações de segurança da publicação, recuperação e uso de metadados de serviço.
Quando publicar metadados
Os serviços do WCF não publicam metadados por padrão. Para publicar metadados para um serviço WCF, você deve habilitar explicitamente a publicação de metadados adicionando pontos de extremidade de metadados ao seu serviço (consulte Metadados de Publicação). Deixar a publicação de metadados desabilitada reduz a superfície de ataque do serviço e reduz o risco de divulgação de informações não intencionais. Nem todos os serviços devem publicar metadados. Se você não precisar publicar metadados, considere deixá-los desativados. Observe que você ainda pode gerar metadados e código do cliente diretamente de seus assemblies de serviço usando a Ferramenta de Utilitário de Metadados do ServiceModel (Svcutil.exe). Para obter mais informações sobre como usar Svcutil.exe para exportar metadados, consulte Como usar Svcutil.exe para exportar metadados do código de serviço compilado.
Publicando metadados usando uma associação segura
As associações de metadados padrão fornecidas pelo WCF não são seguras e permitem acesso anônimo aos metadados. Os metadados de serviço publicados por um serviço WCF contêm uma descrição detalhada sobre o serviço e podem conter informações confidenciais intencional ou não intencionalmente. Por exemplo, os metadados de serviço podem conter informações sobre operações de infraestrutura que não foram destinadas a serem transmitidas publicamente. Para proteger os metadados de serviço contra o acesso não autorizado, use uma associação segura para o ponto de extremidade de metadados. Os pontos de extremidade de metadados respondem a solicitações HTTP/GET e podem utilizar Secure Sockets Layer (SSL) para proteger os metadados. Para obter mais informações, confira Como proteger pontos de extremidade de metadados.
A proteção dos pontos de extremidade de metadados também fornece uma forma para os solicitantes recuperarem metadados de serviço com segurança sem o risco de adulteração ou falsificação.
Usando apenas metadados confiáveis
Você pode usar metadados de serviço para construir automaticamente os componentes de runtime necessários para chamar o serviço. Você também pode usar metadados em tempo de design para desenvolver um aplicativo cliente ou em tempo de execução para atualizar dinamicamente a associação que um cliente usa para chamar um serviço.
Os metadados de serviço podem ser adulterados ou falsificados quando recuperados de maneira insegura. Metadados adulterados podem redirecionar seu cliente para um serviço mal-intencionado, conter configurações de segurança comprometidas ou conter estruturas XML mal-intencionadas. Os documentos de metadados podem ser grandes e são frequentemente salvos no sistema de arquivos. Para proteger contra adulteração e falsificação, use uma associação segura para solicitar metadados de serviço quando houver uma disponível.
Usando técnicas seguras para processar metadados
Metadados de serviço são frequentemente recuperados de um serviço em uma rede usando protocolos padronizados, como WS-MetadataExchange (MEX). Muitos formatos de metadados incluem mecanismos de referência para apontar para metadados adicionais. O tipo MetadataExchangeClient processa automaticamente as referências em documentos da linguagem WSDL, esquema XML e documentos MEX. O tamanho do MetadataSet objeto criado a partir dos metadados recuperados é diretamente proporcional ao MaximumResolvedReferences valor da MetadataExchangeClient instância usada e ao MaxReceivedMessageSize
valor da associação que está sendo usada por essa MetadataExchangeClient instância. Defina essas cotas como valores apropriados conforme determinado pelo seu cenário.
No WCF, os metadados de serviço são processados como XML. Ao processar documentos XML, os aplicativos devem se proteger contra estruturas XML mal-intencionadas. Use o XmlDictionaryReader com as cotas apropriadas ao processar o XML e defina a propriedade DtdProcessing como Prohibit.
O sistema de metadados no WCF é extensível e as extensões de metadados podem ser registradas no arquivo de configuração do aplicativo (consulte Estendendo o sistema de metadados). As extensões de metadados podem executar código arbitrário, portanto, você deve proteger seu arquivo de configuração de aplicativo com ACLs (listas de controle de acesso) apropriadas e registrar apenas implementações de extensão de metadados confiáveis.
Validando clientes gerados
Ao gerar o código do cliente de metadados recuperados de uma origem que não é confiável, valide o código do cliente gerado para garantir que o cliente gerado esteja em conformidade com as políticas de segurança dos aplicativos cliente. Você pode usar um comportamento de validação para verificar as configurações em sua associação de cliente ou inspecionar visualmente o código gerado pelas ferramentas. Para obter um exemplo de como implementar um cliente que valida comportamentos, consulte Validação do Cliente.
Protegendo arquivos de configuração de aplicativo
O arquivo de configuração de aplicativo de um serviço pode controlar como e se os metadados são publicados. É uma boa ideia proteger o arquivo de configuração do aplicativo com ACLs (listas de controle de acesso) apropriadas para garantir que um invasor não possa modificar essas configurações.