Útmutató: Üzenet-visszajátszás észlelésének engedélyezése
A visszajátszásos támadás akkor fordul elő, ha a támadó egy üzenetfolyamot másol két fél között, és visszajátssza a streamet egy vagy több fél számára. Ha nem csökkentik a mértéket, a támadás tárgyát képező számítógépek a streamet jogszerű üzenetként fogják feldolgozni, ami számos rossz következménnyel jár, például egy elem redundáns megrendelései.
Az üzenet-visszajátszás észleléséről további információt az Üzenet visszajátszásának észlelése című témakörben talál.
Az alábbi eljárás a Windows Communication Foundation (WCF) használatával vezérelhető visszajátszásészlelés különböző tulajdonságait mutatja be.
A visszajátszás észlelésének szabályozása az ügyfélen kód használatával
Hozzon létre egy SecurityBindingElement , a alkalmazásban használandót CustomBinding. További információ : Egyéni kötés létrehozása a SecurityBindingElement használatával. Az alábbi példa az SymmetricSecurityBindingElement osztálysal létrehozott objektumot CreateKerberosBindingElementSecurityBindingElement használja.
Használja a LocalClientSettings tulajdonságot az LocalClientSecuritySettings osztályra mutató hivatkozás visszaadásához, és szükség szerint állítsa be az alábbi tulajdonságok bármelyikét:
DetectReplay
. Egy logikai érték. Ez szabályozza, hogy az ügyfél észlelje-e a kiszolgálóról érkező visszajátszásokat. Az alapértelmezett értéktrue
.MaxClockSkew
. Egy TimeSpan érték. Azt szabályozza, hogy az újrajátszási mechanizmus mennyi időt bír el az ügyfél és a kiszolgáló között. A biztonsági mechanizmus megvizsgálja az elküldött időbélyeget, és megállapítja, hogy túl messzire küldték-e a múltban. Az alapértelmezett érték 5 perc.ReplayWindow
. EgyTimeSpan
érték. Ez azt szabályozza, hogy mennyi ideig élhet egy üzenet a hálózaton, miután a kiszolgáló elküldte (közvetítőkön keresztül) az ügyfél elérése előtt. Az ügyfél nyomon követi a legkésőbbReplayWindow
a visszajátszás észlelése céljából küldött üzenetek aláírását.ReplayCacheSize
. Egész szám. Az ügyfél gyorsítótárban tárolja az üzenet aláírását. Ez a beállítás határozza meg, hogy a gyorsítótár hány aláírást tárolhat. Ha az utolsó visszajátszási ablakban küldött üzenetek száma eléri a gyorsítótárkorlátot, a rendszer mindaddig elutasítja az új üzeneteket, amíg a legrégebbi gyorsítótárazott aláírások el nem érik az időkorlátot. Az alapértelmezett érték 500000.
A szolgáltatás visszajátszásészlelésének szabályozása kóddal
Hozzon létre egy SecurityBindingElement , a alkalmazásban használandót CustomBinding.
LocalServiceSettings A tulajdonság használatával visszaadhatja az LocalServiceSecuritySettings osztályra mutató hivatkozást, és a korábban ismertetett tulajdonságokat állíthatja be.
A visszajátszás észlelésének szabályozása az ügyfél vagy szolgáltatás konfigurációjában
Hozzon létre egy egyénibindinget>.<
Hozzon létre egy
<security>
elemet.Hozzon létre egy localClient Gépház> vagy <localService Gépház>.<
Állítsa be a következő attribútumértékeket a megfelelő módon:
detectReplays
,maxClockSkew
,replayWindow
ésreplayCacheSize
. Az alábbi példa egy és egy<localClientSettings>
elem attribútumait is<localServiceSettings>
beállítja:<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élda
Az alábbi példa létrehoz egy metódust SymmetricSecurityBindingElementCreateKerberosBindingElement , és beállítja a kötés visszajátszási tulajdonságait.
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
Visszajátszás hatóköre: Csak üzenetbiztonság
Vegye figyelembe, hogy az alábbi eljárások csak az Üzenet biztonsági módra vonatkoznak. Üzenet hitelesítő módban történő átvitel és átvitel esetén az átviteli mechanizmusok észlelik a visszajátszásokat.
Biztonságos beszélgetési jegyzetek
A biztonságos beszélgetéseket engedélyező kötések esetében ezeket a beállításokat az alkalmazáscsatornához és a biztonságos beszélgetésindítási kötéshez is módosíthatja. Kikapcsolhatja például az alkalmazáscsatorna visszajátszásait, de engedélyezheti őket a biztonságos beszélgetést létesítő bootstrap-csatornához.
Ha nem használ biztonságos beszélgetési munkameneteket, a visszajátszásészlelés nem garantálja a visszajátszások észlelését a kiszolgálófarm-forgatókönyvekben és a folyamat újrafeldolgozásakor. Ez a következő rendszer által biztosított kötésekre vonatkozik:
WSHttpBindinga tulajdonság értéke .EstablishSecurityContext
false
A kód összeállítása
A kód fordításához a következő névterek szükségesek: