Verhindern von Replay-Angriffen bei Hosten eines WCF-Diensts in einer WebfarmPreventing Replay Attacks When a WCF Service is Hosted in a Web Farm

Bei Verwendung von Nachrichtensicherheit verhindert WCF Replay-Angriffe, indem aus der eingehenden Nachricht eine NONCE erstellt und der InMemoryNonceCache daraufhin überprüft wird, ob die generierte NONCE vorhanden ist.When using message security WCF prevents replay attacks by creating a NONCE out of the incoming message and checking the internal InMemoryNonceCache to see if the generated NONCE is present. Wenn dies der Fall ist, wird die Nachricht als Replay-Nachricht verworfen.If it is, the message is discarded as a replay. Wenn ein WCF-Dienst in einer Webfarm gehostet wird, ist der Dienst für Replay-Angriffe anfällig, da der InMemoryNonceCache nicht für die Knoten in der Webfarm freigegeben ist.When a WCF service is hosted in a web farm, since the InMemoryNonceCache is not shared across the nodes in the web farm, the service is vulnerable to replay attacks. Um die Bedrohung in diesem Szenario zu verringern, bietet WCF 4.5 einen Erweiterungspunkt, der Ihnen das Implementieren eines eigenen freigegebenen NONCE-Caches ermöglicht. Dies erfolgt durch das Ableiten einer Klasse von der abstrakten Klasse NonceCache.To mitigate this scenario WCF 4.5 provides an extensibility point that allows you to implement your own shared NONCE cache by deriving a class from the abstract class NonceCache.

NonceCache-ImplementierungNonceCache Implementation

Zum Implementieren eines eigenen freigegebenen NONCE-Caches leiten Sie eine Klasse von NonceCache ab, und überschreiben Sie die CheckNonce-Methode und die TryAddNonce-Methode.To implement your own shared NONCE cache, derive a class from NonceCache and override the CheckNonce and TryAddNonce methods. CheckNonce überprüft, ob die angegebene NONCE im Cache vorhanden ist.CheckNonce will check to see if the specified NONCE exists in the cache. TryAddNonce versucht, dem Cache eine NONCE hinzuzufügen.TryAddNonce will attempt to add a NONCE to the cache. Sobald die Klasse implementiert wurde, verknüpfen Sie sie, indem Sie eine Instanz instanziieren und sie NonceCache für die clientseitige Replay-Erkennung und NonceCache für die serverseitige Replay-Erkennung zuweisen.Once the class is implemented, you hook it up by instantiating an instance and assigning it to NonceCache for client-side replay detection and NonceCache for server-side replay detection. Es ist keine standardmäßige Konfigurationsunterstützung für diese Funktion verfügbar.There is no out of the box configuration support for this feature.

Siehe auchSee Also

NachrichtensicherheitMessage Security
SymmetricSecurityBindingElementSymmetricSecurityBindingElement