Megosztás a következőn keresztül:


Ú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

  1. 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.

  2. 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:

    1. 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ék true.

    2. 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.

    3. ReplayWindow. Egy TimeSpan é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őbb ReplayWindow a visszajátszás észlelése céljából küldött üzenetek aláírását.

    4. 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

  1. Hozzon létre egy SecurityBindingElement , a alkalmazásban használandót CustomBinding.

  2. 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

  1. Hozzon létre egy egyénibindinget>.<

  2. Hozzon létre egy <security> elemet.

  3. Hozzon létre egy localClient Gépház> vagy <localService Gépház>.<

  4. Állítsa be a következő attribútumértékeket a megfelelő módon: detectReplays, maxClockSkew, replayWindowés replayCacheSize. 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:

A kód összeállítása

Lásd még