Keamanan Layanan Web (WS) dengan Contoh SOAP

โšก Ringkasan Cerdas

Keamanan Layanan Web (WS Security) adalah standar yang melindungi data yang dipertukarkan selama panggilan layanan web SOAP. Sumber daya ini menjelaskan ancaman keamanan dan penanggulangannya, standar WS-Security, membangun layanan web yang aman dengan kredensial, dan praktik terbaik keamanan layanan web.

  • ๐Ÿ” Standar Inti: WS-Security menambahkan lapisan keamanan pada SOAP, mendefinisikan bagaimana kredensial dan kunci enkripsi dikirim di dalam header SOAP.
  • ๐ŸŒ Batasan HTTPS: HTTPS/SSL mengamankan lalu lintas point-to-point, tetapi dalam alur multi-server hanya WS-Security yang menjaga pesan tetap terlindungi dari ujung ke ujung.
  • ๐ŸŽซ Token Kredensial: Kredensial diteruskan menggunakan UsernameToken untuk nama pengguna dan kata sandi, atau BinarySecurityToken untuk sertifikat Kerberos atau X.509.
  • ๏ธ Contoh Pembangunan Aman: Layanan web .Net ASMX menambahkan kelas AuthHeader sehingga header SOAP membawa nama pengguna dan kata sandi untuk otentikasi.
  • ๐Ÿ“‹ Praktik terbaik: Permintaan audit dan pencatatan, track operasional bisnis, lakukan otentikasi dengan benar, dan jangan pernah menyimpan atau mencatat kredensial sensitif.

Layanan Web Keamanan WS

Apa itu Keamanan WS?

WS Security adalah standar yang membahas keamanan saat data dipertukarkan sebagai bagian dari layanan web. Ini adalah fitur kunci dalam SOAP yang membuatnya sangat populer untuk membuat layanan web.

Keamanan merupakan fitur penting dalam setiap aplikasi web. Karena hampir semua aplikasi web terekspos ke internet, selalu ada kemungkinan ancaman keamanan terhadap aplikasi web. Oleh karena itu, saat mengembangkanping Untuk aplikasi berbasis web, selalu disarankan untuk memastikan bahwa aplikasi tersebut dirancang dan dikembangkan dengan mempertimbangkan keamanan.

Ancaman dan Penanggulangan Keamanan

Untuk memahami ancaman keamanan yang dapat membahayakan aplikasi web, mari kita lihat skenario sederhana dari sebuah aplikasi web dan bagaimana cara kerjanya dari segi keamanan.

Salah satu langkah pengamanan yang tersedia untuk HTTP adalah protokol HTTPS. HTTPS adalah cara komunikasi yang aman antara klien dan server melalui web. HTTPS menggunakan Secure Sockets Layer, atau SSL, untuk komunikasi yang aman. Baik klien maupun server akan memiliki sertifikat digital untuk mengidentifikasi diri mereka sebagai pihak yang sah ketika terjadi komunikasi antara klien dan server.

Ancaman Keamanan dan Penanggulangan HTTPS

Dalam komunikasi HTTPS standar antara klien dan server, langkah-langkah berikut terjadi:

  1. Klien mengirimkan permintaan ke server melalui sertifikat klien. Ketika server melihat sertifikat klien, server membuat catatan di sistem cache sehingga server mengetahui bahwa respons hanya boleh kembali ke klien ini.
  2. Server kemudian mengautentikasi dirinya ke klien dengan mengirimkan sertifikatnya. Ini memastikan bahwa klien berkomunikasi dengan server yang tepat.
  3. Semua komunikasi selanjutnya antara klien dan server dienkripsi. Hal ini memastikan bahwa jika pengguna lain mencoba membobol keamanan dan mendapatkan data yang dibutuhkan, mereka tidak akan dapat membacanya karena data tersebut telah dienkripsi.

Namun, jenis keamanan di atas tidak akan berfungsi dalam semua situasi. Mungkin ada saatnya klien dapat berkomunikasi dengan beberapa server sekaligus. Contoh di bawah ini menunjukkan klien yang berkomunikasi dengan basis data dan server web secara bersamaan. Dalam kasus seperti itu, tidak semua informasi dapat melewati protokol HTTPS.

Ancaman Keamanan dan Penanggulangan pada beberapa server

Di sinilah SOAP berperan untuk mengatasi hambatan tersebut dengan adanya spesifikasi WS Security. Dengan spesifikasi ini, semua data terkait keamanan didefinisikan dalam elemen header SOAP. Elemen header dapat berisi informasi yang disebutkan di bawah ini:

  1. Jika pesan dalam badan SOAP telah ditandatangani dengan kunci keamanan apa pun, kunci tersebut dapat ditentukan dalam elemen header.
  2. Jika ada elemen dalam Body SOAP yang dienkripsi, header akan berisi kunci enkripsi yang diperlukan sehingga pesan dapat didekripsi ketika sampai di tujuan.

Dalam lingkungan multi-server, teknik autentikasi SOAP di atas membantu dengan cara berikut:

  • Karena badan SOAP dienkripsi, maka hanya dapat didekripsi oleh server web yang menghosting layanan web. Hal ini karena bagaimana protokol SOAP dirancang.
  • Misalkan pesan tersebut dikirimkan ke server basis data dalam permintaan HTTP; pesan tersebut tidak dapat didekripsi karena basis data tidak memiliki mekanisme yang tepat untuk melakukannya.
  • Hanya ketika permintaan benar-benar mencapai server web sebagai protokol SOAP, barulah server dapat menguraikan pesan dan mengirimkan respons yang sesuai kembali ke klien.

Pada topik selanjutnya kita akan melihat bagaimana standar WS Security dapat digunakan untuk... SOAP.

Standar Keamanan Layanan Web

Seperti yang telah dibahas di bagian sebelumnya, standar WS-Security berpusat pada penyertaan definisi keamanan dalam Header SOAP. Kredensial dalam header SOAP dikelola dengan 2 cara.

Pertama, ia mendefinisikan elemen khusus yang disebut UsernameToken. Ini digunakan untuk mengirimkan nama pengguna dan kata sandi ke layanan web. Cara lain adalah menggunakan Token Biner melalui BinarySecurityToken. Ini digunakan dalam situasi di mana teknik enkripsi seperti Kerberos atau X.509 digunakan.

Diagram di bawah ini menunjukkan alur kerja model keamanan di WS Security.

Alur kerja Standar Keamanan Layanan Web

Berikut adalah langkah-langkah yang terjadi dalam alur kerja di atas:

  1. Permintaan dapat dikirim dari klien layanan web ke Layanan Token Keamanan. Layanan ini dapat berupa layanan web perantara yang secara khusus dibangun untuk menyediakan nama pengguna/kata sandi atau sertifikat ke layanan web SOAP yang sebenarnya.
  2. Token keamanan kemudian diteruskan ke klien layanan Web.
  3. Klien layanan web kemudian memanggil layanan web, tetapi kali ini memastikan bahwa token keamanan tertanam dalam pesan SOAP.
  4. Layanan Web kemudian memahami pesan SOAP dengan token otentikasi dan kemudian dapat menghubungi layanan Token Keamanan untuk melihat apakah token keamanan itu asli atau tidak.

Cuplikan di bawah ini menunjukkan format bagian otentikasi yang merupakan bagian dari dokumen WSDL. Berdasarkan cuplikan di bawah ini, pesan SOAP akan berisi 2 elemen tambahan, yaitu Nama Pengguna dan Kata Sandi.

<xs:element name="UsernameToken">
   <xs:complexType>
      <xs:sequence>
         <xs:element ref="Username"/>
         <xs:element ref="Password" minOccurs="0"/>
      </xs:sequence>
      <xs:attribute name="Id" type="xs:ID"/>
   </xs:complexType>
</xs:element>

Ketika pesan SOAP benar-benar dikirimkan antara klien dan server, bagian pesan yang berisi kredensial pengguna dapat terlihat seperti yang ditunjukkan di atas. Nama elemen wsse adalah nama elemen khusus yang didefinisikan untuk SOAP dan berarti bahwa elemen tersebut berisi informasi berbasis keamanan.

Bagaimana membangun layanan web yang aman

Sekarang mari kita lihat contoh keamanan layanan web SOAP. Kita akan membangun keamanan layanan web berdasarkan contoh yang telah ditunjukkan sebelumnya dalam bab SOAP dan akan menambahkan lapisan keamanan padanya.

Dalam contoh kita, kita akan membuat layanan web sederhana, yang akan digunakan untuk mengembalikan string ke aplikasi yang memanggil layanan web tersebut. Namun kali ini, ketika layanan web dipanggil, kredensial perlu diberikan ke layanan pemanggil. Mari kita ikuti langkah-langkah di bawah ini untuk membuat layanan web SOAP kita dan menambahkan definisi keamanan ke dalamnya.

Langkah 1) Langkah pertama adalah membuat yang kosong Asp.Net Aplikasi web. Dari Visual Studio 2013, klik opsi menu File->Proyek baru.

Membangun Layanan Web Aman (proyek baru)

Setelah Anda mengeklik opsi New Project, Visual Studio akan memberikan kotak dialog lain untuk memilih jenis proyek dan memberikan rincian yang diperlukan tentang proyek tersebut. Hal ini dijelaskan pada langkah berikutnya.

Langkah 2) Pada langkah ini,

  1. Pastikan Anda memilih terlebih dahulu C# Templat web untuk aplikasi web ASP.NET. Proyek harus bertipe ini agar dapat membuat proyek layanan web. Dengan memilih opsi ini, Visual Studio kemudian akan melakukan langkah-langkah yang diperlukan untuk menambahkan file yang dibutuhkan oleh aplikasi berbasis web apa pun.
  2. Berikan nama untuk proyek Anda yang dalam kasus kami diberikan sebagai โ€œlayanan web.asmxKemudian pastikan untuk menentukan lokasi penyimpanan file proyek.

Detail proyek Membangun Layanan Web yang Aman

Setelah selesai, Anda akan melihat file proyek yang dibuat di penjelajah solusi Anda di Visual Studio 2013.

Membangun penjelajah solusi Layanan Web Aman

Langkah 3) Pada langkah ini, kita akan menambahkan file layanan web ke proyek kita.

  1. Pertama, klik kanan pada file proyek seperti yang ditunjukkan di bawah ini.

Buat Layanan Web Aman (klik kanan proyek)

  1. Setelah Anda mengklik kanan file proyek, Anda dapat memilih opsi โ€œTambah->Layanan Web (ASMX)โ€ untuk menambahkan file layanan web. Cukup berikan nama Tutorial Service untuk nama file layanan web.

Membangun Layanan Web yang Aman menambahkan layanan web

Langkah di atas akan memunculkan kotak dialog, di mana Anda dapat memasukkan nama file layanan web. Jadi, pada kotak dialog di bawah ini, masukkan nama TutorialService sebagai nama file.

Bangun dialog nama Layanan Web Aman

Langkah 4) Tambahkan kode berikut ke file asmx Tutorial Service Anda. Potongan kode di bawah ini digunakan untuk menambahkan kelas kustom yang akan digunakan untuk mengubah Header SOAP saat pesan SOAP dibuat. Karena sekarang kita ingin menambahkan kredensial keamanan ke header SOAP, langkah ini diperlukan.

Membangun kode AuthHeader Layanan Web yang Aman

      return "This is a Guru99 Web Service";
   }

   public class AuthHeader : SoapHeader
   {
      public string UserName;
      public string Password;
   }
}

Code Penjelasan:

  1. Kami sekarang membuat kelas terpisah yang disebut AuthHeader yang bertipe Kelas SoapHeaderSetiap kali Anda ingin mengubah apa yang dilewatkan dalam header SOAP, Anda perlu membuat kelas yang menggunakan kelas SoapHeader bawaan .Net. Dengan menyesuaikan header SOAP, kita sekarang memiliki kemampuan untuk mengirimkan 'Username' dan 'Password' saat layanan web dipanggil.
  2. Kami kemudian mendefinisikan variabel 'Nama Pengguna' dan 'Kata Sandi' yang bertipe string. Mereka akan digunakan untuk menyimpan nilai nama pengguna dan kata sandi yang diteruskan ke layanan web.

Langkah 5) Sebagai langkah selanjutnya, kode berikut perlu ditambahkan ke yang sama File TutorialService.asmxKode ini sebenarnya mendefinisikan fungsi layanan web kita. Fungsi ini mengembalikan string "Ini adalah sebuah Guru99 Layanan webโ€ ke klien. Namun kali ini, string tersebut hanya akan dikembalikan jika aplikasi klien meneruskan kredensial ke layanan web.

Tutorial Membangun Layanan Web yang Aman Kode Layanan

public class TutorialService : System.Web.Services.WebService
{
   public AuthHeader Credentials;

   [SoapHeader("Credentials")]

   [WebMethod]
   public string Guru99WebService()
   {

      if (Credentials.UserName.ToLower() != "Guru99" ||
      Credentials.Password.ToLower() != "Guru99Password")
      {
         throw new SoapException("Unauthorized",
         SoapException.ClientFaultCode);
      }
      else
      return "This is a Guru99 Web service";
   }

Code Penjelasan:

  1. Di sini, kita membuat objek kelas AuthHeader yang dibuat pada langkah sebelumnya. Objek ini akan diteruskan ke kami Guru99Webservice di mana nama pengguna dan kata sandi dapat diperiksa dengan cermat.
  2. Atribut [SoapHeader] sekarang digunakan untuk menentukan bahwa ketika layanan Web dipanggil, nama pengguna dan kata sandi harus diteruskan.
  3. Dalam blok kode ini, kita sebenarnya memeriksa nama pengguna dan kata sandi yang diteruskan saat layanan web dipanggil. Jika Nama Pengguna sama dengan โ€œGuru99โ€ dan kata sandinya sama dengan โ€œGuru99Passwordโ€, lalu pesan โ€œIni adalah Guru"Layanan web 99" diteruskan ke klien. Jika tidak, kesalahan akan dikirim ke klien jika ID pengguna dan kata sandi yang salah diberikan.

Jika kode berhasil dieksekusi, Output berikut akan ditampilkan saat Anda menjalankan kode di peramban.

Keluaran:

Membangun output Layanan Web Aman

Output di atas ditampilkan saat program dijalankan, yang berarti layanan web sekarang tersedia. Mari kita klik pada Layanan tersebut. Descripttautan ion.

Deskripsi layanan Membangun Layanan Web yang Aman

Dari deskripsi layanan, Anda sekarang dapat melihat bahwa nama pengguna dan kata sandi adalah elemen dari wsdl mengajukan. Parameter ini perlu dikirim saat layanan web dipanggil.

Praktik Terbaik Keamanan Layanan Web

Berikut adalah pertimbangan keamanan yang perlu diperhatikan saat bekerja dengan layanan web:

  1. Audit dan Manajemen Log โ€“ Gunakan pencatatan aplikasi untuk mencatat semua permintaan yang masuk ke layanan web. Ini memberikan laporan terperinci tentang siapa yang telah memanggil layanan web dan dapat membantu dalam analisis dampak jika terjadi pelanggaran keamanan.
  2. Alur panggilan ke layanan web โ€“ Cobalah untuk mencatat alur panggilan dalam layanan web. Secara default, sebuah aplikasi dapat memanggil beberapa permintaan layanan web dengan token otentikasi yang diteruskan di antara layanan web tersebut. Semua panggilan antar layanan web perlu dipantau dan dicatat.
  3. Informasi sensitif โ€“ Jangan sertakan informasi sensitif dalam catatan log Anda, seperti kata sandi, nomor kartu kredit, atau informasi rahasia lainnya. Jika ada kejadian yang berisi informasi tersebut, informasi tersebut perlu dihapus sebelum dicatat.
  4. TracBisnis k Operations - Track operasi bisnis yang signifikan. Misalnya, instrumentasikan aplikasi Anda untuk merekam akses ke metode dan logika bisnis yang sangat sensitif. Ambil contoh toko online.ping Aplikasi. Terdapat beberapa langkah dalam aplikasi pada umumnya, seperti memilih barang yang akan dibeli, memasukkan barang ke dalam keranjang belanja, dan kemudian melakukan pembelian akhir. Seluruh alur kerja bisnis ini perlu dikelola. tracdikirim oleh layanan web.
  5. Otentikasi yang Tepat โ€“ Otentikasi adalah mekanisme yang digunakan klien untuk menetapkan identitas mereka dengan layanan web menggunakan serangkaian kredensial tertentu yang dapat membuktikan identitas tersebut. Kredensial pengguna tidak boleh disimpan, dan oleh karena itu, jika WS Security digunakan untuk memanggil layanan web, perlu diperhatikan bahwa layanan web tidak boleh menyimpan kredensial yang dikirim dalam header SOAP. Kredensial tersebut harus dibuang oleh layanan web.

Pertanyaan Umum Demo Slot

AI dapat memantau lalu lintas layanan web secara real-time, mendeteksi pola permintaan yang tidak biasa, dan menandai kemungkinan serangan seperti injeksi atau penyalahgunaan token. AI juga dapat memindai konfigurasi WSDL dan SOAP untuk mendeteksi otentikasi yang lemah atau enkripsi yang hilang.

Ya. Model pembelajaran mesin yang dilatih pada lalu lintas normal dapat mendeteksi anomali seperti credential stuffing, header SOAP yang salah format, atau serangan replay. Tim keamanan tetap harus meninjau peringatan sebelum memblokir permintaan untuk menghindari gangguan pada klien yang sah.

HTTPS mengenkripsi koneksi antara dua titik, sehingga data akan terekspos begitu mencapai server perantara. WS-Security mengamankan pesan SOAP itu sendiri, menjaga...ping Sistem ini memberikan perlindungan ujung ke ujung bahkan ketika melewati beberapa server.

UsernameToken adalah elemen WS-Security yang ditempatkan di header SOAP yang membawa nama pengguna dan, secara opsional, kata sandi. Elemen ini memungkinkan layanan web untuk mengautentikasi pemanggil sebelum memproses permintaan.

Ringkaslah postingan ini dengan: