Udostępnij za pośrednictwem


Zagadnienia dotyczące zabezpieczeń obejmujące metadane

W przypadku korzystania z funkcji metadanych w programie Windows Communication Foundation (WCF) należy wziąć pod uwagę wpływ na bezpieczeństwo publikowania, pobierania i używania metadanych usługi.

Kiedy opublikować metadane

Usługi WCF domyślnie nie publikują metadanych. Aby opublikować metadane dla usługi WCF, należy jawnie włączyć publikowanie metadanych przez dodanie do usługi punktów końcowych metadanych (zobacz Publikowanie metadanych). Pozostawienie wyłączonych publikowania metadanych zmniejsza obszar ataków dla usługi i zmniejsza ryzyko przypadkowego ujawnienia informacji. Nie wszystkie usługi muszą publikować metadane. Jeśli nie musisz publikować metadanych, rozważ wyłączenie go. Należy pamiętać, że nadal można wygenerować metadane i kod klienta bezpośrednio z zestawów usług przy użyciu narzędzia ServiceModel Metadata Tool (Svcutil.exe). Aby uzyskać więcej informacji na temat używania Svcutil.exe do eksportowania metadanych, zobacz How to: Use Svcutil.exe to Export Metadata from Compiled Service Code (Instrukcje: używanie Svcutil.exe do eksportowania metadanych z skompilowanego kodu usługi).

Publikowanie metadanych przy użyciu bezpiecznego powiązania

Domyślne powiązania metadanych udostępniane przez usługę WCF nie są bezpieczne i umożliwiają anonimowy dostęp do metadanych. Metadane usługi publikowane przez usługę WCF zawierają szczegółowy opis usługi i mogą celowo lub przypadkowo zawierać poufne informacje. Na przykład metadane usługi mogą zawierać informacje o operacjach infrastruktury, które nie miały być emitowane publicznie. Aby chronić metadane usługi przed nieautoryzowanym dostępem, możesz użyć bezpiecznego powiązania dla punktu końcowego metadanych. Punkty końcowe metadanych odpowiadają na żądania HTTP/GET, które mogą zabezpieczać metadane przy użyciu protokołu Secure Sockets Layer (SSL). Aby uzyskać więcej informacji, zobacz How to: Secure Metadata Endpoints (Instrukcje: zabezpieczanie punktów końcowych metadanych).

Zabezpieczanie punktów końcowych metadanych umożliwia również żądającym bezpieczne pobieranie metadanych usługi bez ryzyka naruszenia lub fałszowania.

Używanie tylko zaufanych metadanych

Metadane usługi umożliwiają automatyczne konstruowanie składników czasu wykonywania wymaganych do wywołania usługi. Metadane można również używać w czasie projektowania do tworzenia aplikacji klienckiej lub w czasie wykonywania, aby dynamicznie aktualizować powiązanie używane przez klienta do wywoływania usługi.

Metadane usługi mogą zostać naruszone lub sfałszowane w sposób niezabezpieczony. Naruszone metadane mogą przekierowywać klienta do złośliwej usługi, zawierać naruszone ustawienia zabezpieczeń lub zawierać złośliwe struktury XML. Dokumenty metadanych mogą być duże i są często zapisywane w systemie plików. Aby chronić przed manipulowaniem i fałszowaniem, użyj bezpiecznego powiązania, aby zażądać metadanych usługi, gdy jest dostępny.

Używanie technik Sejf do przetwarzania metadanych

Metadane usługi są często pobierane z usługi za pośrednictwem sieci przy użyciu standardowych protokołów, takich jak WS-MetadataExchange (MEX). Wiele formatów metadanych obejmuje mechanizmy odwoływania się do wskazywania dodatkowych metadanych. Typ MetadataExchangeClient automatycznie przetwarza odwołania do Ciebie w dokumentach języka WSDL (Web Services Description Language), schemacie XML i dokumentach MEX. Rozmiar MetadataSet obiektu utworzonego na podstawie pobranych metadanych jest bezpośrednio proporcjonalny do MaximumResolvedReferences wartości używanego MetadataExchangeClient wystąpienia oraz MaxReceivedMessageSize wartości powiązania używanego przez to MetadataExchangeClient wystąpienie. Ustaw te przydziały na odpowiednie wartości zgodnie z wymaganiami scenariusza.

W programie WCF metadane usługi są przetwarzane jako xml. Podczas przetwarzania dokumentów XML aplikacje powinny chronić się przed złośliwymi strukturami XML. Użyj wartości XmlDictionaryReader z odpowiednimi limitami przydziału podczas przetwarzania DtdProcessing kodu XML, a także ustaw właściwość na Prohibitwartość .

System metadanych w programie WCF jest rozszerzalny, a rozszerzenia metadanych można zarejestrować w pliku konfiguracji aplikacji (zobacz Rozszerzanie systemu metadanych). Rozszerzenia metadanych mogą uruchamiać dowolny kod, dlatego należy chronić plik konfiguracji aplikacji przy użyciu odpowiednich list kontroli dostępu (ACL) i rejestrować tylko implementacje zaufanych rozszerzeń metadanych.

Weryfikowanie wygenerowanych klientów

Podczas generowania kodu klienta z metadanych pobranych ze źródła, które nie jest zaufane, zweryfikuj wygenerowany kod klienta, aby upewnić się, że wygenerowany klient jest zgodny z zasadami zabezpieczeń aplikacji klienckich. Możesz użyć prawidłowego zachowania, aby sprawdzić ustawienia powiązania klienta lub wizualnie sprawdzić kod wygenerowany przez narzędzia. Aby zapoznać się z przykładem implementacji klienta weryfikującego zachowania, zobacz Walidacja klienta.

Ochrona plików konfiguracji aplikacji

Plik konfiguracji aplikacji usługi może kontrolować, jak i czy metadane są publikowane. Dobrym pomysłem jest ochrona pliku konfiguracji aplikacji przy użyciu odpowiednich list kontroli dostępu (ACL), aby upewnić się, że osoba atakująca nie może modyfikować takich ustawień.

Zobacz też