Bagikan melalui


Cara: Mengaktifkan Deteksi Pemutaran Ulang Pesan

Serangan pemutaran ulang terjadi saat penyerang menyalin aliran pesan antara dua pihak dan memutar ulang aliran ke satu atau beberapa pihak. Kecuali dimitigasi, komputer target serangan akan memproses aliran sebagai pesan yang sah, yang mengakibatkan berbagai konsekuensi buruk, seperti pesanan item yang berlebihan.

Untuk informasi selengkapnya tentang deteksi pemutaran ulang pesan, lihat Deteksi Pemutaran Ulang Pesan.

Prosedur berikut menunjukkan berbagai properti yang dapat Anda gunakan untuk mengontrol deteksi pemutaran ulang menggunakan Windows Communication Foundation (WCF).

Untuk mengontrol deteksi pemutaran ulang pada klien menggunakan kode

  1. Buat SecurityBindingElement untuk digunakan dalam CustomBinding. Untuk informasi selengkapnya, lihat Cara: Membuat Pengikatan Kustom Menggunakan SecurityBindingElement. Contoh berikut menggunakan SymmetricSecurityBindingElement yang dibuat dengan CreateKerberosBindingElement dari kelas SecurityBindingElement.

  2. Gunakan properti LocalClientSettings untuk mengembalikan referensi ke kelas LocalClientSecuritySettings dan mengatur salah satu properti berikut, yang sesuai:

    1. DetectReplay. Nilai Boolean. Ini mengatur apakah klien harus mendeteksi pemutaran ulang dari server. Default adalah true.

    2. MaxClockSkew. Nilai TimeSpan. Mengatur berapa banyak waktu yang dapat ditoleransi oleh mekanisme pemutaran ulang antara klien dan server. Mekanisme keamanan memeriksa stempel waktu yang dikirim dan menentukan apakah itu dikirim terlalu jauh di masa lalu. Defaultnya adalah 5 menit.

    3. ReplayWindow. Nilai TimeSpan. Ini mengatur berapa lama pesan dapat hidup di jaringan setelah server mengirimkannya (melalui perantara) sebelum mencapai klien. Klien melacak tanda tangan pesan yang dikirim dalam ReplayWindow terbaru untuk tujuan deteksi pemutaran ulang.

    4. ReplayCacheSize. Nilai bilangan bulat. Klien menyimpan tanda tangan pesan dalam cache. Pengaturan ini menentukan berapa banyak tanda tangan yang dapat disimpan cache. Jika jumlah pesan yang dikirim dalam jendela pemutaran ulang terakhir mencapai batas cache, pesan baru ditolak hingga tanda tangan cache terlama mencapai batas waktu. Defaultnya adalah 500.000.

Untuk mengontrol deteksi pemutaran ulang pada layanan menggunakan kode

  1. Buat SecurityBindingElement untuk digunakan dalam CustomBinding.

  2. Gunakan properti LocalServiceSettings untuk mengembalikan referensi ke kelas LocalServiceSecuritySettings, dan atur properti seperti yang dijelaskan sebelumnya.

Untuk mengontrol deteksi pemutaran ulang dalam konfigurasi untuk klien atau layanan

  1. Buat <customBinding>.

  2. Buat elemen <security>.

  3. Buat <localClientSettings> atau <localServiceSettings>.

  4. Atur nilai atribut berikut, yang sesuai: detectReplays, maxClockSkew, replayWindow, dan replayCacheSize. Contoh berikut mengatur atribut elemen <localServiceSettings> dan <localClientSettings>:

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

Contoh

Contoh berikut membuat SymmetricSecurityBindingElement menggunakan metode CreateKerberosBindingElement, dan mengatur properti pemutaran ulang pengikatan.

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

Cakupan Pemutaran Ulang: Keamanan Pesan Saja

Perhatikan bahwa prosedur berikut ini hanya berlaku untuk mode keamanan Pesan. Untuk mode Transportasi dan Transportasi dengan Kredensial Pesan, mekanisme transportasi mendeteksi pemutaran ulang.

Catatan Percakapan Aman

Untuk pengikatan yang mengaktifkan percakapan aman, Anda dapat menyesuaikan pengaturan ini baik untuk saluran aplikasi maupun untuk pengikatan bootstrap percakapan yang aman. Misalnya, Anda dapat menonaktifkan pemutaran ulang untuk saluran aplikasi tetapi mengaktifkannya untuk saluran bootstrap yang membuat percakapan aman.

Jika Anda tidak menggunakan sesi percakapan yang aman, deteksi pemutaran ulang tidak menjamin mendeteksi pemutaran ulang dalam skenario farm server dan kapan proses didaur ulang. Ini berlaku untuk pengikatan yang disediakan sistem berikut:

Mengompilasi Kode

Lihat juga