Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Odmowa usługi występuje, gdy system jest przeciążony w taki sposób, że nie można przetworzyć komunikatów lub są przetwarzane bardzo wolno.
Nadmierne użycie pamięci
Problem może wystąpić podczas odczytywania dokumentu XML z dużą liczbą unikatowych nazw lokalnych, przestrzeni nazw lub prefiksów. Jeśli używasz klasy pochodnej z XmlReader, i wywołujesz właściwość LocalName, Prefix lub NamespaceURI dla każdego elementu, zwracany ciąg zostanie dodany do NameTable. Kolekcja przechowywana przez NameTable nigdy nie zmniejsza swojego rozmiaru, powodując wirtualny "wyciek pamięci" uchwytów ciągów.
Środki zaradcze obejmują:
Wyprowadź z klasy NameTable i wymuś maksymalny limit rozmiaru. (Nie można zapobiec użyciu NameTable ani przełączeniu NameTable, gdy jest pełny.)
Zamiast używać wspomnianych właściwości, używaj MoveToAttribute metody z IsStartElement metodą, gdzie to możliwe. Metody te nie zwracają ciągów, i tym samym unikniesz problemu nadmiernego wypełniania NameTable kolekcji.
Złośliwy klient wysyła do usługi nadmierne żądania licencji
Jeśli złośliwy klient bombarduje usługę z nadmiernymi żądaniami licencji, może to spowodować użycie przez serwer nadmiernej ilości pamięci.
Środki zaradcze: Użyj następujących właściwości LocalServiceSecuritySettings klasy:
MaxCachedCookies: kontroluje maksymalną liczbę czasowych
SecurityContextToken
przechowywanych w pamięci podręcznej przez serwer po zakończeniuSPNego
lub negocjacjiSSL
.IssuedCookieLifetime: kontroluje okres istnienia, który serwer wystawia po wykonaniu
SecurityContextTokens
SPNego
negocjacji lubSSL
negocjacji. Serwer buforuje obiektySecurityContextToken
na ten okres czasu.MaxPendingSessions: steruje maksymalną liczbą bezpiecznych konwersacji ustanowionych na serwerze, ale dla których żadne komunikaty aplikacji nie zostały przetworzone. Ten przydział uniemożliwia klientom ustanawianie bezpiecznych konwersacji w usłudze, co powoduje utrzymywanie stanu dla każdego klienta, ale nigdy go nie używa.
InactivityTimeout: określa maksymalny czas, przez jaki usługa utrzymuje bezpieczną konwersację bez odbierania komunikatu aplikacji od klienta na potrzeby konwersacji. Ten przydział uniemożliwia klientom ustanawianie bezpiecznych konwersacji w usłudze, co powoduje utrzymywanie stanu dla każdego klienta, ale nigdy go nie używa.
WSDualHttpBinding lub podwójne powiązania niestandardowe wymagają uwierzytelniania klienta
Domyślnie właściwość WSDualHttpBinding ma włączone zabezpieczenia. Istnieje jednak możliwość, że jeśli uwierzytelnianie klienta jest wyłączone przez ustawienie ClientCredentialType właściwości na None, złośliwy użytkownik może spowodować atak typu "odmowa dostępu" na trzecią usługę. Może się tak zdarzyć, ponieważ złośliwy klient może kierować usługę do wysyłania strumienia komunikatów do trzeciej usługi.
Aby temu zapobiec, nie należy ustawiać właściwości na None
. Należy również pamiętać o tej możliwości podczas tworzenia powiązania niestandardowego, które ma podwójny wzorzec komunikatu.
Dziennik zdarzeń inspekcji można wypełnić
Jeśli złośliwy użytkownik rozumie, że inspekcja jest włączona, osoba atakująca może wysyłać nieprawidłowe komunikaty, które powodują zapisanie wpisów inspekcji. Jeśli dziennik inspekcji zostanie wypełniony w ten sposób, system inspekcji zakończy się niepowodzeniem.
Aby to złagodzić, ustaw właściwość SuppressAuditFailure na true
i użyj właściwości podglądu zdarzeń, aby kontrolować zachowanie inspekcji. Aby uzyskać więcej informacji na temat wyświetlania dzienników zdarzeń i zarządzania nimi, zobacz Podgląd zdarzeń. Aby uzyskać więcej informacji, zobacz Inspekcja.
Nieprawidłowe implementacje zasad IAuthorizationPolicy mogą spowodować, że usługa przestanie odpowiadać
Evaluate Wywołanie metody w wadliwej implementacji interfejsu IAuthorizationPolicy może spowodować, że usługa przestanie odpowiadać.
Środki zaradcze: użyj tylko zaufanego kodu. Oznacza to, że należy użyć tylko kodu napisanego i przetestowanego lub pochodzącego z zaufanego dostawcy. Nie zezwalaj na podłączanie niezaufanych rozszerzeń IAuthorizationPolicy do kodu bez należytej uwagi. Dotyczy to wszystkich rozszerzeń używanych w implementacji usługi. Program WCF nie rozróżnia kodu aplikacji i kodu obcego, który jest podłączony przy użyciu punktów rozszerzalności.
Maksymalny rozmiar tokenu protokołu Kerberos może wymagać dostosowania
Jeśli klient należy do dużej liczby grup (około 900, chociaż rzeczywista liczba różni się w zależności od grup), problem może wystąpić, gdy blok nagłówka komunikatu przekracza 64 kilobajty. W takim przypadku można zwiększyć maksymalny rozmiar tokenu Kerberos. Może być również konieczne zwiększenie maksymalnego rozmiaru komunikatów WCF, aby uwzględnić większy token protokołu Kerberos.
Automatyczne rejestrowanie powoduje uzyskanie wielu certyfikatów z jednakową nazwą podmiotu dla maszyny
Automatyczna rejestracja to funkcja systemu Windows Server 2003 do automatycznego rejestrowania użytkowników i komputerów na potrzeby certyfikatów. Gdy maszyna znajduje się w domenie z włączoną funkcją, certyfikat X.509 z zamierzonym celem uwierzytelniania klienta jest automatycznie tworzony i wstawiany do magazynu certyfikatów osobistych komputera lokalnego za każdym razem, gdy nowy komputer jest przyłączony do sieci. Jednak samoczynna rejestracja używa tej samej nazwy podmiotu dla wszystkich certyfikatów tworzonych w cache.
Skutkiem jest to, że usługi WCF mogą mieć problemy z otwarciem w domenach z automatyczną rejestracją. Dzieje się tak, ponieważ domyślne kryteria wyszukiwania poświadczeń X.509 dla usług mogą być niejednoznaczne, ponieważ istnieje wiele certyfikatów mających w pełni kwalifikowaną nazwę systemu nazw domen (DNS) dla maszyny. Jeden certyfikat pochodzi z autorejestrowania; drugi może być certyfikatem wystawionym samodzielnie.
Aby to złagodzić, należy odwołać się do dokładnego certyfikatu, który ma być użyty przy użyciu bardziej precyzyjnego kryterium wyszukiwania w <serviceCredentials>. Na przykład użyj opcji FindByThumbprint i określ certyfikat przy użyciu jego unikatowego skrótu (hashu).
Aby uzyskać więcej informacji na temat funkcji automatycznego rejestrowania, zobacz Automatyczne rejestrowanie certyfikatów w systemie Windows Server 2003.
Ostatnia z wielu alternatywnych nazw podmiotów używanych do autoryzacji
W rzadkich przypadkach, gdy certyfikat X.509 zawiera wiele alternatywnych nazw podmiotów, a autoryzacja przy użyciu alternatywnej nazwy podmiotu może zakończyć się niepowodzeniem.
Chroń pliki konfiguracyjne za pomocą list ACL
Wymagane i opcjonalne oświadczenia można określić w plikach kodu i konfiguracji wystawionych tokenów w usłudze CardSpace. Powoduje to, że odpowiadające elementy są emitowane w komunikatach RequestSecurityToken
, które są wysyłane do usługi tokenu zabezpieczającego. Osoba atakująca może zmodyfikować kod lub konfigurację w celu usunięcia wymaganych lub opcjonalnych oświadczeń, co może potencjalnie spowodować, że usługa tokenu zabezpieczającego wystawi token, który nie zezwala na dostęp do usługi docelowej.
Aby rozwiązać ten problem: Wymagaj dostępu do komputera w celu zmodyfikowania pliku konfiguracji. Użyj list kontroli dostępu do plików (ACL), aby zabezpieczyć pliki konfiguracji. WCF wymaga, aby kod znajdował się w katalogu aplikacji lub globalnej pamięci zestawów, zanim pozwoli na załadowanie tego kodu z konfiguracji. Użyj list kontroli dostępu (ACL), aby zabezpieczyć katalogi.
Osiągnięto maksymalną liczbę bezpiecznych sesji dla usługi
Po pomyślnym uwierzytelnieniu klienta przez usługę i ustanowieniu bezpiecznej sesji z usługą usługa śledzi sesję, dopóki klient go nie anuluje lub sesja wygaśnie. Każda ustanowiona sesja wlicza się do limitu maksymalnej liczby aktywnych jednoczesnych sesji z usługą. Po osiągnięciu tego limitu klienci, którzy próbują utworzyć nową sesję z tą usługą, zostaną odrzuconi do momentu wygaśnięcia co najmniej jednej aktywnej sesji lub anulowania przez klienta. Klient może mieć wiele sesji z usługą, a każda z tych sesji wlicza się do limitu.
Uwaga / Notatka
W przypadku korzystania z sesji stanowych poprzedni akapit nie ma zastosowania. Aby uzyskać więcej informacji na temat sesji stanowych, zobacz How to: Create a Security Context Token for a Secure Session (Instrukcje: tworzenie tokenu kontekstu zabezpieczeń dla sesji zabezpieczonej).
Aby temu zapobiec, ustaw limit maksymalnej liczby aktywnych sesji i maksymalny okres istnienia sesji, ustawiając SecurityBindingElement właściwość SecurityBindingElement klasy.
Zobacz także
- Zagadnienia dotyczące zabezpieczeń
- Ujawnienie informacji
- Podniesienie uprawnień
- odmowa usługi
- Ataki powtarzane
- Manipulowanie
- Nieobsługiwane scenariusze