Postupy: Povolení zjišťování opakování zpráv
Útok na přehrání nastane, když útočník zkopíruje stream zpráv mezi dvěma stranami a přehraje stream na jednu nebo více stran. Pokud to zmírnit není, počítače, na které se útok vztahuje, zpracuje stream jako legitimní zprávy, což vede k rozsahu špatných důsledků, jako jsou redundantní objednávky položky.
Další informace o detekci přehrání zpráv naleznete v tématu Detekce přehrání zpráv.
Následující postup ukazuje různé vlastnosti, které můžete použít k řízení detekce přehrávání pomocí technologie Windows Communication Foundation (WCF).
Řízení detekce přehrání na klientovi pomocí kódu
Vytvořte soubor SecurityBindingElement , který se má použít v souboru CustomBinding. Další informace naleznete v tématu Postupy: Vytvoření vlastní vazby pomocí SecurityBindingElement. Následující příklad používá vytvořenou SymmetricSecurityBindingElement s CreateKerberosBindingElementSecurityBindingElement třídou.
LocalClientSettings Pomocí vlastnosti vrátíte odkaz na LocalClientSecuritySettings třídu a podle potřeby nastavíte některou z následujících vlastností:
DetectReplay
. Logická hodnota. To určuje, jestli má klient detekovat přehrání ze serveru. Výchozí hodnota jetrue
.MaxClockSkew
. Hodnota TimeSpan . Určuje, kolik času může mechanismus přehrání tolerovat mezi klientem a serverem. Bezpečnostní mechanismus zkoumá odeslaná časová razítka a určuje, jestli byl odeslán příliš daleko zpět v minulosti. Výchozí hodnota je 5 minut.ReplayWindow
. HodnotaTimeSpan
. To určuje, jak dlouho může zpráva žít v síti poté, co ji server odešle (prostřednictvím zprostředkovatelů) před dosažením klienta. Klient sleduje podpisy zpráv odeslaných v nejnovějšíReplayWindow
verzi pro účely detekce přehrání.ReplayCacheSize
. Celočíselná hodnota. Klient ukládá podpisy zprávy do mezipaměti. Toto nastavení určuje, kolik podpisů může mezipaměť uložit. Pokud počet zpráv odeslaných v posledním okně přehrávání dosáhne limitu mezipaměti, budou nové zprávy odmítnuty, dokud nedosáhne časového limitu nejstarší podpisy uložené v mezipaměti. Výchozí hodnota je 500000.
Řízení detekce přehrání ve službě pomocí kódu
Vytvořte soubor SecurityBindingElement , který se má použít v souboru CustomBinding.
LocalServiceSettings Vlastnost použijte k vrácení odkazu na LocalServiceSecuritySettings třídu a nastavte vlastnosti, jak je popsáno výše.
Řízení detekce přehrání v konfiguraci klienta nebo služby
Vytvořte vlastní vazbu>.<
Vytvořte
<security>
prvek.Vytvořte localClient Nastavení> nebo <localService Nastavení>.<
Podle potřeby nastavte následující hodnoty atributů:
detectReplays
,maxClockSkew
,replayWindow
areplayCacheSize
. Následující příklad nastaví atributy jak a<localServiceSettings>
<localClientSettings>
element:<customBinding> <binding name="NewBinding0"> <textMessageEncoding /> <security> <localClientSettings replayCacheSize="800000" maxClockSkew="00:03:00" replayWindow="00:03:00" /> <localServiceSettings replayCacheSize="800000" maxClockSkew="00:03:00" replayWindow="00:03:00" /> <secureConversationBootstrap /> </security> <httpTransport /> </binding> </customBinding>
Příklad
Následující příklad vytvoří SymmetricSecurityBindingElement pomocí CreateKerberosBindingElement metody a nastaví vlastnosti přehrání vazby.
private SecurityBindingElement CreateSymmetricBindingForClient()
{
SymmetricSecurityBindingElement b = SecurityBindingElement.CreateKerberosBindingElement();
b.LocalClientSettings.DetectReplays = true;
b.LocalClientSettings.MaxClockSkew = new TimeSpan(0, 3, 0);
b.LocalClientSettings.ReplayWindow = new TimeSpan(0, 2, 0);
b.LocalClientSettings.ReplayCacheSize = 10000;
return b;
}
Private Function CreateSymmetricBindingForClient() As SecurityBindingElement
Dim b = SecurityBindingElement.CreateKerberosBindingElement()
With b.LocalClientSettings
.DetectReplays = True
.MaxClockSkew = New TimeSpan(0, 3, 0)
.ReplayWindow = New TimeSpan(0, 2, 0)
.ReplayCacheSize = 10000
End With
Return b
End Function
Rozsah přehrání: Pouze zabezpečení zpráv
Všimněte si, že následující postupy platí pouze pro režim zabezpečení zpráv. V případě režimů přenosů a přenosů s přihlašovacími údaji zpráv detekují přehrání mechanismy přenosu.
Zabezpečené poznámky ke konverzaci
U vazeb, které umožňují zabezpečené konverzace, můžete tato nastavení upravit jak pro kanál aplikace, tak pro zabezpečenou vazbu bootstrap konverzace. Můžete například vypnout přehrání kanálu aplikace, ale povolit je pro kanál bootstrap, který vytvoří zabezpečenou konverzaci.
Pokud nepoužíváte zabezpečené relace konverzací, detekce přehrání nezaručuje detekci přehrání ve scénářích serverové farmy a při recyklaci procesu. To platí pro následující systémové vazby:
WSHttpBinding vlastnost nastavena EstablishSecurityContext na
false
.
Probíhá kompilace kódu
Ke kompilaci kódu se vyžadují následující obory názvů: